Przeglądaj źródła

open settings drawer on swipe

ashilkn 2 lat temu
rodzic
commit
de818b3952
2 zmienionych plików z 39 dodań i 16 usunięć
  1. 19 0
      lib/ui/extents_page_view.dart
  2. 20 16
      lib/ui/home_widget.dart

+ 19 - 0
lib/ui/extents_page_view.dart

@@ -58,6 +58,7 @@ class ExtentsPageView extends StatefulWidget {
     this.onPageChanged,
     List<Widget> children = const <Widget>[],
     this.dragStartBehavior = DragStartBehavior.start,
+    this.openDrawer,
   })  : controller = controller ?? _defaultPageController,
         childrenDelegate = SliverChildListDelegate(children),
         extents = children.length,
@@ -90,6 +91,7 @@ class ExtentsPageView extends StatefulWidget {
     @required IndexedWidgetBuilder itemBuilder,
     int itemCount,
     this.dragStartBehavior = DragStartBehavior.start,
+    this.openDrawer,
   })  : controller = controller ?? _defaultPageController,
         childrenDelegate =
             SliverChildBuilderDelegate(itemBuilder, childCount: itemCount),
@@ -108,6 +110,7 @@ class ExtentsPageView extends StatefulWidget {
     @required IndexedWidgetBuilder itemBuilder,
     int itemCount,
     this.dragStartBehavior = DragStartBehavior.start,
+    this.openDrawer,
   })  : controller = controller ?? _defaultPageController,
         childrenDelegate = SliverChildBuilderDelegate(
           itemBuilder,
@@ -207,6 +210,7 @@ class ExtentsPageView extends StatefulWidget {
     this.onPageChanged,
     @required this.childrenDelegate,
     this.dragStartBehavior = DragStartBehavior.start,
+    this.openDrawer,
   })  : assert(childrenDelegate != null),
         extents = 0,
         controller = controller ?? _defaultPageController,
@@ -272,6 +276,8 @@ class ExtentsPageView extends StatefulWidget {
   /// {@macro flutter.widgets.scrollable.dragStartBehavior}
   final DragStartBehavior dragStartBehavior;
 
+  final Function openDrawer; //nullable
+
   @override
   State<ExtentsPageView> createState() => _PageViewState();
 }
@@ -283,6 +289,19 @@ class _PageViewState extends State<ExtentsPageView> {
   void initState() {
     super.initState();
     _lastReportedPage = widget.controller.initialPage;
+    widget.openDrawer != null
+        ? widget.controller.addListener(() {
+            if (widget.controller.offset < -200) {
+              widget.openDrawer();
+            }
+          })
+        : null;
+  }
+
+  @override
+  void dispose() {
+    widget.controller.removeListener(() {});
+    super.dispose();
   }
 
   AxisDirection _getDirection(BuildContext context) {

+ 20 - 16
lib/ui/home_widget.dart

@@ -75,7 +75,6 @@ class _HomeWidgetState extends State<HomeWidget> {
   final _logger = Logger("HomeWidgetState");
   final _selectedFiles = SelectedFiles();
 
-  // final _settingsButton = SettingsButton();
   final PageController _pageController = PageController();
   int _selectedTabIndex = 0;
   Widget _headerWidgetWithSettingsButton;
@@ -305,23 +304,28 @@ class _HomeWidgetState extends State<HomeWidget> {
             CollectionsService.instance.getActiveCollections().isEmpty;
     return Stack(
       children: [
-        ExtentsPageView(
-          onPageChanged: (page) {
-            Bus.instance.fire(
-              TabChangedEvent(
-                page,
-                TabChangedEventSource.pageView,
-              ),
+        Builder(
+          builder: (context) {
+            return ExtentsPageView(
+              onPageChanged: (page) {
+                Bus.instance.fire(
+                  TabChangedEvent(
+                    page,
+                    TabChangedEventSource.pageView,
+                  ),
+                );
+              },
+              controller: _pageController,
+              openDrawer: Scaffold.of(context).openDrawer,
+              children: [
+                showBackupFolderHook
+                    ? _getBackupFolderSelectionHook()
+                    : _getMainGalleryWidget(),
+                _deviceFolderGalleryWidget,
+                _sharedCollectionGallery,
+              ],
             );
           },
-          controller: _pageController,
-          children: [
-            showBackupFolderHook
-                ? _getBackupFolderSelectionHook()
-                : _getMainGalleryWidget(),
-            _deviceFolderGalleryWidget,
-            _sharedCollectionGallery,
-          ],
         ),
         const Align(
           alignment: Alignment.bottomCenter,