@@ -327,6 +327,7 @@ class HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
327327 floatingActionButton:
328328 ResponsiveUtil .isDesktop () ? null : _buildFloatingActionButton (),
329329 floatingActionButtonLocation: FloatingActionButtonLocation .endContained,
330+ extendBody: true ,
330331 );
331332 }
332333
@@ -675,79 +676,87 @@ class HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
675676 Widget gridView = Selector <AppProvider , bool >(
676677 selector: (context, provider) => provider.dragToReorder,
677678 builder: (context, dragToReorder, child) => Selector <AppProvider , bool >(
678- selector: (context, provider) => provider.hideProgressBar,
679- builder: (context, hideProgressBar, child) =>
680- ReorderableGridView .builder (
681- // controller: _scrollController,
682- gridItemsNotifier: gridItemsNotifier,
683- autoScroll: true ,
684- physics: const AlwaysScrollableScrollPhysics (),
685- padding:
686- const EdgeInsets .only (left: 10 , right: 10 , top: 10 , bottom: 10 ),
687- gridDelegate: SliverWaterfallFlowDelegateWithMaxCrossAxisExtent (
688- maxCrossAxisExtent: layoutType.maxCrossAxisExtent,
689- crossAxisSpacing: 8 ,
690- mainAxisSpacing: 8 ,
691- preferredHeight: layoutType.getHeight (hideProgressBar),
679+ selector: (context, provider) => provider.hideBottombarWhenScrolling,
680+ builder: (context, hideBottombarWhenScrolling, child) =>
681+ Selector <AppProvider , bool >(
682+ selector: (context, provider) => provider.hideProgressBar,
683+ builder: (context, hideProgressBar, child) =>
684+ ReorderableGridView .builder (
685+ // controller: _scrollController,
686+ gridItemsNotifier: gridItemsNotifier,
687+ autoScroll: true ,
688+ physics: const AlwaysScrollableScrollPhysics (),
689+ padding: EdgeInsets .only (
690+ left: 10 ,
691+ right: 10 ,
692+ top: 10 ,
693+ bottom:
694+ hideBottombarWhenScrolling || categories.isEmpty ? 10 : 85 ),
695+ gridDelegate: SliverWaterfallFlowDelegateWithMaxCrossAxisExtent (
696+ maxCrossAxisExtent: layoutType.maxCrossAxisExtent,
697+ crossAxisSpacing: 8 ,
698+ mainAxisSpacing: 8 ,
699+ preferredHeight: layoutType.getHeight (hideProgressBar),
700+ ),
701+ dragToReorder: dragToReorder,
702+ cacheExtent: 9999 ,
703+ // itemDragEnable: (index) {
704+ // if (tokens[index].pinnedInt == 1) {
705+ // return false;
706+ // }
707+ // return true;
708+ // },
709+ onReorderStart: (_) {
710+ _fabScrollToHideController.hide ();
711+ _bottombarScrollToHideController.hide ();
712+ },
713+ onReorderEnd: (_, __) {
714+ _fabScrollToHideController.show ();
715+ _bottombarScrollToHideController.show ();
716+ },
717+ onReorder: (int oldIndex, int newIndex) async {
718+ final selectedToken = tokens[oldIndex];
719+ int pinnedCount = tokens.where ((e) => e.pinned).length;
720+ if (selectedToken.pinned) {
721+ if (newIndex >= pinnedCount) newIndex = pinnedCount - 1 ;
722+ } else {
723+ if (newIndex < pinnedCount) newIndex = pinnedCount;
724+ }
725+ final item = tokens.removeAt (oldIndex);
726+ tokens.insert (newIndex, item);
727+ for (int i = 0 ; i < tokens.length; i++ ) {
728+ tokens[i].seq = tokens.length - i;
729+ }
730+ await TokenDao .updateTokens (tokens, autoBackup: false );
731+ changeOrderType (type: OrderType .Default , doPerformSort: false );
732+ },
733+ proxyDecorator:
734+ (Widget child, int index, Animation <double > animation) {
735+ return Container (
736+ decoration: BoxDecoration (
737+ borderRadius: BorderRadius .circular (12 ),
738+ boxShadow: [
739+ BoxShadow (
740+ color: Theme .of (rootContext).shadowColor,
741+ offset: const Offset (0 , 4 ),
742+ blurRadius: 10 ,
743+ spreadRadius: 1 ,
744+ ).scale (2 )
745+ ],
746+ ),
747+ child: child,
748+ );
749+ },
750+ itemCount: tokens.length,
751+ itemBuilder: (context, index) {
752+ return TokenLayout (
753+ key: tokenKeyMap.putIfAbsent (
754+ tokens[index].uid, () => GlobalKey ()),
755+ token: tokens[index],
756+ layoutType: layoutType,
757+ );
758+ },
692759 ),
693- dragToReorder: dragToReorder,
694- cacheExtent: 9999 ,
695- // itemDragEnable: (index) {
696- // if (tokens[index].pinnedInt == 1) {
697- // return false;
698- // }
699- // return true;
700- // },
701- onReorderStart: (_) {
702- _fabScrollToHideController.hide ();
703- _bottombarScrollToHideController.hide ();
704- },
705- onReorderEnd: (_, __) {
706- _fabScrollToHideController.show ();
707- _bottombarScrollToHideController.show ();
708- },
709- onReorder: (int oldIndex, int newIndex) async {
710- final selectedToken = tokens[oldIndex];
711- int pinnedCount = tokens.where ((e) => e.pinned).length;
712- if (selectedToken.pinned) {
713- if (newIndex >= pinnedCount) newIndex = pinnedCount - 1 ;
714- } else {
715- if (newIndex < pinnedCount) newIndex = pinnedCount;
716- }
717- final item = tokens.removeAt (oldIndex);
718- tokens.insert (newIndex, item);
719- for (int i = 0 ; i < tokens.length; i++ ) {
720- tokens[i].seq = tokens.length - i;
721- }
722- await TokenDao .updateTokens (tokens, autoBackup: false );
723- changeOrderType (type: OrderType .Default , doPerformSort: false );
724- },
725- proxyDecorator:
726- (Widget child, int index, Animation <double > animation) {
727- return Container (
728- decoration: BoxDecoration (
729- borderRadius: BorderRadius .circular (12 ),
730- boxShadow: [
731- BoxShadow (
732- color: Theme .of (rootContext).shadowColor,
733- offset: const Offset (0 , 4 ),
734- blurRadius: 10 ,
735- spreadRadius: 1 ,
736- ).scale (2 )
737- ],
738- ),
739- child: child,
740- );
741- },
742- itemCount: tokens.length,
743- itemBuilder: (context, index) {
744- return TokenLayout (
745- key:
746- tokenKeyMap.putIfAbsent (tokens[index].uid, () => GlobalKey ()),
747- token: tokens[index],
748- layoutType: layoutType,
749- );
750- },
751760 ),
752761 ),
753762 );
0 commit comments