Remember search panel open/close state

This commit is contained in:
Shawn 2023-02-28 10:05:51 -07:00
parent d0196a458c
commit 042cb6425a
2 changed files with 17 additions and 1 deletions

View File

@ -8,6 +8,7 @@ class SettingsLogic with ThrottledSaveLoadMixin {
late final hasCompletedOnboarding = ValueNotifier<bool>(false)..addListener(scheduleSave);
late final hasDismissedSearchMessage = ValueNotifier<bool>(false)..addListener(scheduleSave);
late final isSearchPanelOpen = ValueNotifier<bool>(true)..addListener(scheduleSave);
late final currentLocale = ValueNotifier<String?>(null)..addListener(scheduleSave);
final bool useBlurs = !PlatformInfo.isAndroid;
@ -17,6 +18,7 @@ class SettingsLogic with ThrottledSaveLoadMixin {
hasCompletedOnboarding.value = value['hasCompletedOnboarding'] ?? false;
hasDismissedSearchMessage.value = value['hasDismissedSearchMessage'] ?? false;
currentLocale.value = value['currentLocale'];
isSearchPanelOpen.value = value['isSearchPanelOpen'] ?? false;
}
@override
@ -25,6 +27,7 @@ class SettingsLogic with ThrottledSaveLoadMixin {
'hasCompletedOnboarding': hasCompletedOnboarding.value,
'hasDismissedSearchMessage': hasDismissedSearchMessage.value,
'currentLocale': currentLocale.value,
'isSearchPanelOpen': isSearchPanelOpen.value,
};
}

View File

@ -28,7 +28,9 @@ class _ArtifactSearchScreenState extends State<ArtifactSearchScreen> with GetItS
String _query = '';
late final WonderData wonder = wondersLogic.getData(widget.type);
late final PanelController panelController = PanelController(true);
late final PanelController panelController = PanelController(
settingsLogic.isSearchPanelOpen.value,
)..addListener(_handlePanelControllerChanged);
late final SearchVizController vizController = SearchVizController(
_searchResults,
minYear: wondersLogic.timelineStartYear,
@ -45,6 +47,13 @@ class _ArtifactSearchScreenState extends State<ArtifactSearchScreen> with GetItS
super.initState();
}
@override
void dispose() {
panelController.dispose();
vizController.dispose();
super.dispose();
}
void _handleSearchSubmitted(String query) {
_query = query;
_updateResults();
@ -58,6 +67,10 @@ class _ArtifactSearchScreenState extends State<ArtifactSearchScreen> with GetItS
void _handleResultPressed(SearchData o) => context.push(ScreenPaths.artifact(o.id.toString()));
void _handlePanelControllerChanged() {
settingsLogic.isSearchPanelOpen.value = panelController.value;
}
void _updateResults() {
if (_query.isEmpty) {
_searchResults = wonder.searchData;