properly remove all listeners in lazy_loading_gallery.dart

This commit is contained in:
ashilkn 2022-11-10 16:23:09 +05:30
parent bb44cffd45
commit 572e0c1be0

View file

@ -65,19 +65,7 @@ class _LazyLoadingGalleryState extends State<LazyLoadingGallery> {
@override @override
void initState() { void initState() {
//this is for removing the 'select all from day' icon on unselecting all files with 'cancel' //this is for removing the 'select all from day' icon on unselecting all files with 'cancel'
widget.selectedFiles.addListener(() { widget.selectedFiles.addListener(_selectedFilesListener);
if (widget.selectedFiles.files.isEmpty) {
_shouldSelectAll.value = false;
_showSelectAllButton.value = false;
//Needs rebuilding for removing the 'select all from day' button on canceling all
//selections after scrolling considerably down
if (mounted) {
setState(() {});
}
} else {
_showSelectAllButton.value = true;
}
});
super.initState(); super.initState();
_init(); _init();
} }
@ -149,8 +137,7 @@ class _LazyLoadingGalleryState extends State<LazyLoadingGallery> {
void dispose() { void dispose() {
_reloadEventSubscription.cancel(); _reloadEventSubscription.cancel();
_currentIndexSubscription.cancel(); _currentIndexSubscription.cancel();
widget.selectedFiles.removeListener(() {}); widget.selectedFiles.removeListener(_selectedFilesListener);
_shouldSelectAll.removeListener(() {});
super.dispose(); super.dispose();
} }
@ -239,6 +226,20 @@ class _LazyLoadingGalleryState extends State<LazyLoadingGallery> {
children: childGalleries, children: childGalleries,
); );
} }
void _selectedFilesListener() {
if (widget.selectedFiles.files.isEmpty) {
_shouldSelectAll.value = false;
_showSelectAllButton.value = false;
//Needs rebuilding for removing the 'select all from day' button on canceling all
//selections after scrolling considerably down
if (mounted) {
setState(() {});
}
} else {
_showSelectAllButton.value = true;
}
}
} }
class LazyLoadingGridView extends StatefulWidget { class LazyLoadingGridView extends StatefulWidget {
@ -287,20 +288,16 @@ class _LazyLoadingGridViewState extends State<LazyLoadingGridView> {
} }
}); });
widget.selectedFiles.addListener(() { widget.selectedFiles.addListener(_selectedFilesListener);
bool shouldRefresh = false;
for (final file in widget.files) {
if (widget.selectedFiles.isPartOfLastSection(file)) {
shouldRefresh = true;
}
}
if (shouldRefresh && mounted) {
setState(() {});
}
});
super.initState(); super.initState();
} }
@override
void dispose() {
widget.selectedFiles.removeListener(_selectedFilesListener);
super.dispose();
}
@override @override
void didUpdateWidget(LazyLoadingGridView oldWidget) { void didUpdateWidget(LazyLoadingGridView oldWidget) {
super.didUpdateWidget(oldWidget); super.didUpdateWidget(oldWidget);
@ -443,4 +440,16 @@ class _LazyLoadingGridViewState extends State<LazyLoadingGridView> {
); );
routeToPage(context, page, forceCustomPageRoute: true); routeToPage(context, page, forceCustomPageRoute: true);
} }
void _selectedFilesListener() {
bool shouldRefresh = false;
for (final file in widget.files) {
if (widget.selectedFiles.isPartOfLastSection(file)) {
shouldRefresh = true;
}
}
if (shouldRefresh && mounted) {
setState(() {});
}
}
} }