11import 'package:flutter/gestures.dart' ;
22import 'package:flutter/material.dart' ;
33import 'package:flutter_riverpod/flutter_riverpod.dart' ;
4- import 'package:tuple/tuple.dart' ;
54import 'package:zenith/state/app_drawer_state.dart' ;
6- import 'package:zenith/system_ui/task_switcher/ app_drawer/app_grid.dart' ;
5+ import 'package:zenith/system_ui/app_drawer/app_grid.dart' ;
76
87class AppDrawer extends ConsumerStatefulWidget {
98 const AppDrawer ({super .key});
@@ -47,13 +46,13 @@ class _AppDrawerState extends ConsumerState<AppDrawer> with SingleTickerProvider
4746 }
4847 });
4948
50- ref.listenManual (appDrawerStateProvider.select ((value) => Tuple2 (value.dragging, value.offset)),
51- (previous, Tuple2 <bool , double > next) {
52- final appDrawerState = ref.read (appDrawerStateProvider);
53- if (! next.item1 && next.item2 == appDrawerState.slideDistance) {
54- appDrawerState.overlayEntry.remove ();
55- }
56- });
49+ // ref.listenManual(appDrawerStateProvider.select((value) => Tuple2(value.dragging, value.offset)),
50+ // (previous, Tuple2<bool, double> next) {
51+ // final appDrawerState = ref.read(appDrawerStateProvider);
52+ // if (!next.item1 && next.item2 == appDrawerState.slideDistance) {
53+ // appDrawerState.overlayEntry.remove();
54+ // }
55+ // });
5756
5857 ref.listenManual (appDrawerStateProvider.select ((value) => value.closePanel), (_, __) {
5958 animateClosing (1 );
@@ -66,11 +65,13 @@ class _AppDrawerState extends ConsumerState<AppDrawer> with SingleTickerProvider
6665 }
6766
6867 void animateOpening (double velocity) {
68+ ref.read (appDrawerStateProvider.notifier).update ((state) => state.copyWith (interactable: true ));
6969 cancelAnimations ();
7070 animateTo (0 , velocity);
7171 }
7272
7373 void animateClosing (double velocity) {
74+ ref.read (appDrawerStateProvider.notifier).update ((state) => state.copyWith (interactable: false ));
7475 cancelAnimations ();
7576 animateTo (ref.read (appDrawerStateProvider).slideDistance, velocity);
7677 }
@@ -100,12 +101,16 @@ class _AppDrawerState extends ConsumerState<AppDrawer> with SingleTickerProvider
100101 Widget build (BuildContext context) {
101102 return Consumer (
102103 builder: (_, WidgetRef ref, Widget ? child) {
104+ bool interactable = ref.watch (appDrawerStateProvider.select ((value) => value.interactable));
103105 double offset = ref.watch (appDrawerStateProvider.select ((value) => value.offset));
104106 double slideDistance = ref.watch (appDrawerStateProvider.select ((value) => value.slideDistance));
105107
106- return Opacity (
107- opacity: 1 - offset / slideDistance,
108- child: child,
108+ return IgnorePointer (
109+ ignoring: ! interactable,
110+ child: Opacity (
111+ opacity: 1 - offset / slideDistance,
112+ child: child,
113+ ),
109114 );
110115 },
111116 child: Consumer (
@@ -119,16 +124,11 @@ class _AppDrawerState extends ConsumerState<AppDrawer> with SingleTickerProvider
119124 onPointerDown: (e) {
120125 _velocityTracker = VelocityTracker .withKind (PointerDeviceKind .touch);
121126 _velocityTracker.addPosition (e.timeStamp, e.localPosition);
122- print ('huh dd' );
123127 },
124128 onPointerMove: (e) {
125129 final appDrawerState = ref.read (appDrawerStateProvider);
126130
127- print ('huh' );
128-
129131 if (appDrawerState.draggable) {
130- print ('move' );
131-
132132 ref.read (appDrawerStateProvider.notifier).update ((state) => state.copyWith (
133133 dragging: true ,
134134 offset: (state.offset + e.delta.dy).clamp (0 , appDrawerState.slideDistance),
@@ -137,8 +137,6 @@ class _AppDrawerState extends ConsumerState<AppDrawer> with SingleTickerProvider
137137 }
138138 },
139139 onPointerUp: (e) {
140- print ('huh up' );
141-
142140 _velocityTracker.addPosition (e.timeStamp, e.localPosition);
143141
144142 final doesntScroll =
@@ -156,7 +154,6 @@ class _AppDrawerState extends ConsumerState<AppDrawer> with SingleTickerProvider
156154 color: Colors .black.withOpacity (0.8 ),
157155 child: Column (
158156 children: [
159- const TextField (),
160157 Expanded (
161158 child: AppDrawerScrollNotificationListener (
162159 child: AppGrid (scrollController: _scrollController),
0 commit comments