Quellcode durchsuchen

Convert List<File> to Set<File> lazily and not on init

ashilkn vor 2 Jahren
Ursprung
Commit
33f1ab13ea
1 geänderte Dateien mit 8 neuen und 4 gelöschten Zeilen
  1. 8 4
      lib/ui/viewer/gallery/component/group/lazy_group_gallery.dart

+ 8 - 4
lib/ui/viewer/gallery/component/group/lazy_group_gallery.dart

@@ -57,7 +57,7 @@ class _LazyGroupGalleryState extends State<LazyGroupGallery> {
   late Logger _logger;
 
   late List<File> _files;
-  late Set<File> _filesAsSet;
+  Set<File>? _filesAsSet;
   late StreamSubscription<FilesUpdatedEvent>? _reloadEventSubscription;
   late StreamSubscription<int> _currentIndexSubscription;
   bool? _shouldRender;
@@ -76,7 +76,6 @@ class _LazyGroupGalleryState extends State<LazyGroupGallery> {
     _logger = Logger("LazyLoading_${widget.logTag}");
     _shouldRender = true;
     _files = widget.files;
-    _filesAsSet = _files.toSet();
     _reloadEventSubscription = widget.reloadEvent?.listen((e) => _onReload(e));
 
     _currentIndexSubscription =
@@ -91,6 +90,11 @@ class _LazyGroupGalleryState extends State<LazyGroupGallery> {
     });
   }
 
+  Set<File> get _setOfFiles {
+    _filesAsSet ??= _files.toSet();
+    return _filesAsSet!;
+  }
+
   bool _areAllFromGroupSelected() {
     if (widget.selectedFiles != null &&
         widget.selectedFiles!.files.length >= widget.files.length) {
@@ -206,7 +210,7 @@ class _LazyGroupGalleryState extends State<LazyGroupGallery> {
                               ),
                               onTap: () {
                                 widget.selectedFiles?.toggleGroupSelection(
-                                  _filesAsSet,
+                                  _setOfFiles,
                                 );
                               },
                             );
@@ -236,7 +240,7 @@ class _LazyGroupGalleryState extends State<LazyGroupGallery> {
   void _selectedFilesListener() {
     if (widget.selectedFiles == null) return;
     _areAllFromGroupSelectedNotifer.value =
-        widget.selectedFiles!.files.containsAll(_filesAsSet);
+        widget.selectedFiles!.files.containsAll(_setOfFiles);
 
     //Can remove this if we decide to show select all by default for all galleries
     if (widget.selectedFiles!.files.isEmpty && !widget.showSelectAllByDefault) {