소스 검색

Refactor gallery

Vishnu Mohandas 5 년 전
부모
커밋
efde1b6fe3
4개의 변경된 파일29개의 추가작업 그리고 25개의 파일을 삭제
  1. 1 1
      lib/ui/device_folder_page.dart
  2. 21 17
      lib/ui/gallery.dart
  3. 5 5
      lib/ui/home_widget.dart
  4. 2 2
      lib/ui/remote_folder_page.dart

+ 1 - 1
lib/ui/device_folder_page.dart

@@ -49,7 +49,7 @@ class _DeviceFolderPageState extends State<DeviceFolderPage> {
       body: Gallery(
         () => Future.value(_getFilteredPhotos(PhotoRepository.instance.photos)),
         selectedPhotos: _selectedPhotos,
-        photoSelectionChangeCallback: (Set<Photo> selectedPhotos) {
+        onPhotoSelectionChange: (Set<Photo> selectedPhotos) {
           setState(() {
             _selectedPhotos = selectedPhotos;
           });

+ 21 - 17
lib/ui/gallery.dart

@@ -16,18 +16,20 @@ import 'package:photos/utils/date_time_util.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
 
 class Gallery extends StatefulWidget {
-  final Future<List<Photo>> Function() loadFunction;
+  final Future<List<Photo>> Function() loader;
+  // TODO: Verify why the event is necessary when calling loader post onRefresh
+  // should have done the job.
+  final Stream<Event> reloadEvent;
+  final Future<void> Function() onRefresh;
   final Set<Photo> selectedPhotos;
-  final Function(Set<Photo>) photoSelectionChangeCallback;
-  final Future<void> Function() syncFunction;
-  final Stream<Event> reloadTrigger;
+  final Function(Set<Photo>) onPhotoSelectionChange;
 
   Gallery(
-    this.loadFunction, {
+    this.loader, {
+    this.reloadEvent,
+    this.onRefresh,
     this.selectedPhotos,
-    this.photoSelectionChangeCallback,
-    this.syncFunction,
-    this.reloadTrigger,
+    this.onPhotoSelectionChange,
   });
 
   @override
@@ -57,11 +59,13 @@ class _GalleryState extends State<Gallery> {
         _openedPhoto = event.photo;
       });
     });
-    widget.reloadTrigger.listen((event) {
-      setState(() {
-        _requiresLoad = true;
+    if (widget.reloadEvent != null) {
+      widget.reloadEvent.listen((event) {
+        setState(() {
+          _requiresLoad = true;
+        });
       });
-    });
+    }
     super.initState();
   }
 
@@ -77,7 +81,7 @@ class _GalleryState extends State<Gallery> {
       return _onSnapshotAvailable(_lastSnapshot);
     }
     return FutureBuilder<List<Photo>>(
-      future: widget.loadFunction(),
+      future: widget.loader(),
       builder: (context, snapshot) {
         _requiresLoad = false;
         _lastSnapshot = snapshot;
@@ -109,15 +113,15 @@ class _GalleryState extends State<Gallery> {
       controller: _scrollController,
       cacheExtent: 1000,
     );
-    if (widget.syncFunction != null) {
+    if (widget.onRefresh != null) {
       return SmartRefresher(
         controller: _refreshController,
         child: list,
         header: SyncIndicator(_refreshController),
         onRefresh: () {
-          widget.syncFunction().then((_) {
+          widget.onRefresh().then((_) {
             _refreshController.refreshCompleted();
-            widget.loadFunction().then((_) => setState(() {
+            widget.loader().then((_) => setState(() {
                   _requiresLoad = true;
                 }));
           }).catchError((e) {
@@ -208,7 +212,7 @@ class _GalleryState extends State<Gallery> {
       } else {
         _selectedPhotos.add(photo);
       }
-      widget.photoSelectionChangeCallback(_selectedPhotos);
+      widget.onPhotoSelectionChange(_selectedPhotos);
     });
   }
 

+ 5 - 5
lib/ui/home_widget.dart

@@ -116,16 +116,16 @@ class _HomeWidgetState extends State<HomeWidget> {
           return Gallery(
             () => Future.value(
                 _getFilteredPhotos(PhotoRepository.instance.photos)),
+            reloadEvent: Bus.instance.on<LocalPhotosUpdatedEvent>(),
+            onRefresh: () {
+              return PhotoSyncManager.instance.sync();
+            },
             selectedPhotos: _selectedPhotos,
-            photoSelectionChangeCallback: (Set<Photo> selectedPhotos) {
+            onPhotoSelectionChange: (Set<Photo> selectedPhotos) {
               setState(() {
                 _selectedPhotos = selectedPhotos;
               });
             },
-            syncFunction: () {
-              return PhotoSyncManager.instance.sync();
-            },
-            reloadTrigger: Bus.instance.on<LocalPhotosUpdatedEvent>(),
           );
         } else if (snapshot.hasError) {
           return Center(child: Text(snapshot.error.toString()));

+ 2 - 2
lib/ui/remote_folder_page.dart

@@ -34,10 +34,10 @@ class _RemoteFolderPageState extends State<RemoteFolderPage> {
       ),
       body: Gallery(
           () => PhotoDB.instance.getAllPhotosInFolder(widget.folder.id),
-          syncFunction: () =>
+          onRefresh: () =>
               FolderSharingService.instance.syncDiff(widget.folder),
           selectedPhotos: _selectedPhotos,
-          photoSelectionChangeCallback: (Set<Photo> selectedPhotos) {
+          onPhotoSelectionChange: (Set<Photo> selectedPhotos) {
             setState(
               () {
                 _selectedPhotos = selectedPhotos;