[mob][photos] Dispose all notifiers of SearchFilterDataProvider after use

This commit is contained in:
ashilkn
2024-11-07 21:47:58 +05:30
parent b83b7ad295
commit 655d9602e0
8 changed files with 46 additions and 6 deletions

View File

@@ -106,7 +106,7 @@ class CollectionPage extends StatelessWidget {
);
return GalleryFilesState(
child: InheritedSearchFilterData(
child: InheritedSearchFilterDataWrapper(
searchFilterDataProvider: SearchFilterDataProvider(
initialGalleryFilter: AlbumFilter(
collectionID: c.collection.id,

View File

@@ -1,6 +1,40 @@
import "package:flutter/material.dart";
import "package:photos/ui/viewer/gallery/state/search_filter_data_provider.dart";
class InheritedSearchFilterDataWrapper extends StatefulWidget {
const InheritedSearchFilterDataWrapper({
super.key,
required this.child,
required this.searchFilterDataProvider,
});
final Widget child;
final SearchFilterDataProvider? searchFilterDataProvider;
@override
State<InheritedSearchFilterDataWrapper> createState() =>
_InheritedSearchFilterDataWrapperState();
}
class _InheritedSearchFilterDataWrapperState
extends State<InheritedSearchFilterDataWrapper> {
@override
void dispose() {
widget.searchFilterDataProvider?.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return InheritedSearchFilterData(
searchFilterDataProvider: widget.searchFilterDataProvider,
child: widget.child,
);
}
}
/// Use [InheritedSearchFilterDataWrapper] instead if using
/// [InheritedSearchFilterData] as a parent widget
class InheritedSearchFilterData extends InheritedWidget {
const InheritedSearchFilterData({
super.key,

View File

@@ -112,6 +112,12 @@ class SearchFilterDataProvider {
filtersToAvoid: filtersToAvoid,
);
}
void dispose() {
_appliedFiltersNotifier.dispose();
_recommendedFiltersNotifier.dispose();
isSearchingNotifier.dispose();
}
}
class _AppliedFiltersNotifier extends ChangeNotifier {

View File

@@ -80,7 +80,7 @@ class UnCategorizedPage extends StatelessWidget {
albumName: S.of(context).uncategorized,
);
return GalleryFilesState(
child: InheritedSearchFilterData(
child: InheritedSearchFilterDataWrapper(
searchFilterDataProvider: SearchFilterDataProvider(
initialGalleryFilter: AlbumFilter(
collectionID: collection.id,

View File

@@ -47,7 +47,7 @@ class _LocationScreenState extends State<LocationScreen> {
InheritedLocationScreenState.of(context).locationTagEntity.item;
return GalleryFilesState(
child: InheritedSearchFilterData(
child: InheritedSearchFilterDataWrapper(
searchFilterDataProvider: SearchFilterDataProvider(
initialGalleryFilter: LocationFilter(
locationTag: locationTag,

View File

@@ -117,7 +117,7 @@ class _PeoplePageState extends State<PeoplePage> {
Widget build(BuildContext context) {
_logger.info("Building for ${widget.person.data.name}");
return GalleryFilesState(
child: InheritedSearchFilterData(
child: InheritedSearchFilterDataWrapper(
searchFilterDataProvider: widget.searchResult != null
? SearchFilterDataProvider(
initialGalleryFilter:

View File

@@ -163,7 +163,7 @@ class _MagicResultScreenState extends State<MagicResultScreen> {
initialFiles: [files.first],
);
return GalleryFilesState(
child: InheritedSearchFilterData(
child: InheritedSearchFilterDataWrapper(
searchFilterDataProvider: SearchFilterDataProvider(
initialGalleryFilter: widget.magicFilter,
),

View File

@@ -97,7 +97,7 @@ class _SearchResultPageState extends State<SearchResultPage> {
);
return GalleryFilesState(
child: InheritedSearchFilterData(
child: InheritedSearchFilterDataWrapper(
searchFilterDataProvider: SearchFilterDataProvider(
initialGalleryFilter:
widget.searchResult.getHierarchicalSearchFilter(),