From 042cb6425abd31ec58e6854e4aacce5c1a205f99 Mon Sep 17 00:00:00 2001 From: Shawn Date: Tue, 28 Feb 2023 10:05:51 -0700 Subject: [PATCH] Remember search panel open/close state --- lib/logic/settings_logic.dart | 3 +++ .../artifact_search/artifact_search_screen.dart | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/logic/settings_logic.dart b/lib/logic/settings_logic.dart index f425cb26..9af3321e 100644 --- a/lib/logic/settings_logic.dart +++ b/lib/logic/settings_logic.dart @@ -8,6 +8,7 @@ class SettingsLogic with ThrottledSaveLoadMixin { late final hasCompletedOnboarding = ValueNotifier(false)..addListener(scheduleSave); late final hasDismissedSearchMessage = ValueNotifier(false)..addListener(scheduleSave); + late final isSearchPanelOpen = ValueNotifier(true)..addListener(scheduleSave); late final currentLocale = ValueNotifier(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, }; } diff --git a/lib/ui/screens/artifact/artifact_search/artifact_search_screen.dart b/lib/ui/screens/artifact/artifact_search/artifact_search_screen.dart index e5db28bb..b67d6187 100644 --- a/lib/ui/screens/artifact/artifact_search/artifact_search_screen.dart +++ b/lib/ui/screens/artifact/artifact_search/artifact_search_screen.dart @@ -28,7 +28,9 @@ class _ArtifactSearchScreenState extends State 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 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 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;