From 467dacdf79f39e913449551d51b1050bbc5acdcb Mon Sep 17 00:00:00 2001 From: nyne Date: Mon, 28 Oct 2024 08:57:29 +0800 Subject: [PATCH] fix search, locale --- lib/components/appbar.dart | 8 ++++---- lib/foundation/app.dart | 17 ++++++++++++++--- lib/pages/search_result_page.dart | 14 +++++++++++++- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/lib/components/appbar.dart b/lib/components/appbar.dart index 560e407..6573dea 100644 --- a/lib/components/appbar.dart +++ b/lib/components/appbar.dart @@ -539,7 +539,7 @@ class SearchBarController { final void Function(String text)? onSearch; - final String initialText; + String currentText; void setText(String text) { _state?.setText(text); @@ -551,7 +551,7 @@ class SearchBarController { setText(text); } - SearchBarController({this.onSearch, this.initialText = ''}); + SearchBarController({this.onSearch, this.currentText = ''}); } abstract mixin class _SearchBarMixin { @@ -591,7 +591,7 @@ class _SliverSearchBarState extends State void initState() { _controller = widget.controller; _controller._state = this; - _editingController = TextEditingController(text: _controller.initialText); + _editingController = TextEditingController(text: _controller.currentText); super.initState(); } @@ -747,7 +747,7 @@ class _SearchBarState extends State with _SearchBarMixin { void initState() { _controller = widget.controller; _controller._state = this; - _editingController = TextEditingController(text: _controller.initialText); + _editingController = TextEditingController(text: _controller.currentText); super.initState(); } diff --git a/lib/foundation/app.dart b/lib/foundation/app.dart index 41a8609..6aa2081 100644 --- a/lib/foundation/app.dart +++ b/lib/foundation/app.dart @@ -6,7 +6,6 @@ import 'package:path_provider/path_provider.dart'; import 'appdata.dart'; - export "widget_utils.dart"; export "context.dart"; @@ -14,12 +13,18 @@ class _App { final version = "1.0.0"; bool get isAndroid => Platform.isAndroid; + bool get isIOS => Platform.isIOS; + bool get isWindows => Platform.isWindows; + bool get isLinux => Platform.isLinux; + bool get isMacOS => Platform.isMacOS; + bool get isDesktop => Platform.isWindows || Platform.isLinux || Platform.isMacOS; + bool get isMobile => Platform.isAndroid || Platform.isIOS; Locale get locale { @@ -28,6 +33,12 @@ class _App { deviceLocale.scriptCode == "Hant") { deviceLocale = const Locale("zh", "TW"); } + if (appdata.settings['language'] != 'system') { + return Locale( + appdata.settings['language'].split('-')[0], + appdata.settings['language'].split('-')[1], + ); + } return deviceLocale; } @@ -45,7 +56,7 @@ class _App { } void pop() { - if(rootNavigatorKey.currentState?.canPop() ?? false) { + if (rootNavigatorKey.currentState?.canPop() ?? false) { rootNavigatorKey.currentState?.pop(); } else if (mainNavigatorKey?.currentState?.canPop() ?? false) { mainNavigatorKey?.currentState?.pop(); @@ -57,7 +68,7 @@ class _App { Future init() async { cachePath = (await getApplicationCacheDirectory()).path; dataPath = (await getApplicationSupportDirectory()).path; - mainColor = switch(appdata.settings['color']) { + mainColor = switch (appdata.settings['color']) { 'red' => Colors.red, 'pink' => Colors.pink, 'purple' => Colors.purple, diff --git a/lib/pages/search_result_page.dart b/lib/pages/search_result_page.dart index 5d856bb..19d2105 100644 --- a/lib/pages/search_result_page.dart +++ b/lib/pages/search_result_page.dart @@ -42,10 +42,14 @@ class _SearchResultPageState extends State { void search([String? text]) { if (text != null) { + if(suggestionsController.entry != null) { + suggestionsController.remove(); + } setState(() { this.text = text; }); appdata.addSearchHistory(text); + controller.currentText = text; } } @@ -80,10 +84,18 @@ class _SearchResultPageState extends State { } } + @override + void dispose() { + Future.microtask(() { + suggestionsController.remove(); + }); + super.dispose(); + } + @override void initState() { controller = SearchBarController( - initialText: widget.text, + currentText: widget.text, onSearch: search, ); sourceKey = widget.sourceKey;