[mob][photos] Dispose all notifiers of SearchFilterDataProvider after use
This commit is contained in:
@@ -106,7 +106,7 @@ class CollectionPage extends StatelessWidget {
|
||||
);
|
||||
|
||||
return GalleryFilesState(
|
||||
child: InheritedSearchFilterData(
|
||||
child: InheritedSearchFilterDataWrapper(
|
||||
searchFilterDataProvider: SearchFilterDataProvider(
|
||||
initialGalleryFilter: AlbumFilter(
|
||||
collectionID: c.collection.id,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -112,6 +112,12 @@ class SearchFilterDataProvider {
|
||||
filtersToAvoid: filtersToAvoid,
|
||||
);
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
_appliedFiltersNotifier.dispose();
|
||||
_recommendedFiltersNotifier.dispose();
|
||||
isSearchingNotifier.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
class _AppliedFiltersNotifier extends ChangeNotifier {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -163,7 +163,7 @@ class _MagicResultScreenState extends State<MagicResultScreen> {
|
||||
initialFiles: [files.first],
|
||||
);
|
||||
return GalleryFilesState(
|
||||
child: InheritedSearchFilterData(
|
||||
child: InheritedSearchFilterDataWrapper(
|
||||
searchFilterDataProvider: SearchFilterDataProvider(
|
||||
initialGalleryFilter: widget.magicFilter,
|
||||
),
|
||||
|
||||
@@ -97,7 +97,7 @@ class _SearchResultPageState extends State<SearchResultPage> {
|
||||
);
|
||||
|
||||
return GalleryFilesState(
|
||||
child: InheritedSearchFilterData(
|
||||
child: InheritedSearchFilterDataWrapper(
|
||||
searchFilterDataProvider: SearchFilterDataProvider(
|
||||
initialGalleryFilter:
|
||||
widget.searchResult.getHierarchicalSearchFilter(),
|
||||
|
||||
Reference in New Issue
Block a user