From 33f1ab13ea8a61a5093e9993db3ee5effde2b9ac Mon Sep 17 00:00:00 2001 From: ashilkn Date: Mon, 17 Jul 2023 10:27:30 +0530 Subject: [PATCH] Convert List to Set lazily and not on init --- .../gallery/component/group/lazy_group_gallery.dart | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/ui/viewer/gallery/component/group/lazy_group_gallery.dart b/lib/ui/viewer/gallery/component/group/lazy_group_gallery.dart index 1b70f5aae..da667eb17 100644 --- a/lib/ui/viewer/gallery/component/group/lazy_group_gallery.dart +++ b/lib/ui/viewer/gallery/component/group/lazy_group_gallery.dart @@ -57,7 +57,7 @@ class _LazyGroupGalleryState extends State { late Logger _logger; late List _files; - late Set _filesAsSet; + Set? _filesAsSet; late StreamSubscription? _reloadEventSubscription; late StreamSubscription _currentIndexSubscription; bool? _shouldRender; @@ -76,7 +76,6 @@ class _LazyGroupGalleryState extends State { _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 { }); } + Set 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 { ), onTap: () { widget.selectedFiles?.toggleGroupSelection( - _filesAsSet, + _setOfFiles, ); }, ); @@ -236,7 +240,7 @@ class _LazyGroupGalleryState extends State { 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) {