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

This commit is contained in:
ashilkn 2023-07-17 10:27:30 +05:30
parent d74a5166db
commit 33f1ab13ea

View file

@ -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) {