From a5e2c567cabe6212ea315437d0ddc51b50f44851 Mon Sep 17 00:00:00 2001 From: niuhuan Date: Thu, 16 Feb 2023 16:33:16 +0800 Subject: [PATCH] :sparkles: Quick choose address --- lib/basic/config/Address.dart | 54 +++++++++++++++++++++++++++-- lib/screens/CategoriesScreen.dart | 2 ++ lib/screens/ComicsScreen.dart | 6 ++-- lib/screens/RandomComicsScreen.dart | 6 ++-- lib/screens/RankingsScreen.dart | 6 ++-- lib/screens/SearchScreen.dart | 2 ++ 6 files changed, 68 insertions(+), 8 deletions(-) diff --git a/lib/basic/config/Address.dart b/lib/basic/config/Address.dart index 7c89354..19fb59f 100644 --- a/lib/basic/config/Address.dart +++ b/lib/basic/config/Address.dart @@ -85,7 +85,7 @@ Widget reloadSwitchAddressSetting() { await method.reloadSwitchAddress(); defaultToast(context, "分流2/3已同步"); } catch (e, s) { - print("$e\$s"); + print("$e\n$s"); defaultToast(context, "分流同步失败"); } } else if (choose == "重制分流为默认值") { @@ -93,7 +93,7 @@ Widget reloadSwitchAddressSetting() { await method.resetSwitchAddress(); defaultToast(context, "分流2/3已重制为默认值"); } catch (e, s) { - print("$e\$s"); + print("$e\n$s"); defaultToast(context, "分流重制失败"); } } @@ -103,3 +103,53 @@ Widget reloadSwitchAddressSetting() { }, ); } + +Future chooseAddressAndSwitch(BuildContext context) async { + String? choose = await showDialog( + context: context, + builder: (BuildContext context) { + return SimpleDialog( + title: const Text('选择分流'), + children: [ + ..._addresses.entries.map( + (e) => SimpleDialogOption( + child: Text(e.value), + onPressed: () { + Navigator.of(context).pop(e.key); + }, + ), + ), + SimpleDialogOption( + child: const Text("分流同步"), + onPressed: () { + Navigator.of(context).pop("分流同步"); + }, + ) + ], + ); + }, + ); + if (choose != null) { + if ("分流同步" == choose) { + try { + await method.reloadSwitchAddress(); + defaultToast(context, "分流2/3已同步"); + } catch (e, s) { + print("$e\n$s"); + defaultToast(context, "分流同步失败"); + } + return; + } + await method.setSwitchAddress(choose); + _currentAddress = choose; + } +} + +Widget addressActionButton(BuildContext context) { + return IconButton( + onPressed: () { + chooseAddressAndSwitch(context); + }, + icon: const Icon(Icons.network_ping), + ); +} diff --git a/lib/screens/CategoriesScreen.dart b/lib/screens/CategoriesScreen.dart index a080435..27de4e6 100644 --- a/lib/screens/CategoriesScreen.dart +++ b/lib/screens/CategoriesScreen.dart @@ -11,6 +11,7 @@ import 'package:pikapika/screens/RankingsScreen.dart'; import 'package:pikapika/screens/SearchScreen.dart'; import 'package:pikapika/screens/components/ContentError.dart'; import 'package:pikapika/basic/Method.dart'; +import '../basic/config/Address.dart'; import '../basic/config/CategoriesColumnCount.dart'; import '../basic/config/IconLoading.dart'; import 'ComicsScreen.dart'; @@ -48,6 +49,7 @@ class _CategoriesScreenState extends State { title: const Text('分类'), actions: [ aPopMenu(context), + addressActionButton(context), _searchBar.getSearchAction(context), ], ); diff --git a/lib/screens/ComicsScreen.dart b/lib/screens/ComicsScreen.dart index e2e2b3a..1c38e6f 100644 --- a/lib/screens/ComicsScreen.dart +++ b/lib/screens/ComicsScreen.dart @@ -7,6 +7,7 @@ import 'package:pikapika/basic/store/Categories.dart'; import 'package:pikapika/basic/config/ListLayout.dart'; import 'package:pikapika/basic/Method.dart'; import '../basic/Entities.dart'; +import '../basic/config/Address.dart'; import '../basic/config/IconLoading.dart'; import 'SearchScreen.dart'; import 'components/ComicPager.dart'; @@ -55,6 +56,7 @@ class _ComicsScreenState extends State { title: Text(categoryTitle(widget.category)), actions: [ aPopMenu(context), + addressActionButton(context), _chooseCategoryAction(), _categorySearchBar.getSearchAction(context), ], @@ -145,8 +147,8 @@ class _ComicsScreenState extends State { appBar = AppBar( title: Text(title), actions: [ - shadowCategoriesActionButton(context), - chooseLayoutActionButton(context), + aPopMenu(context), + addressActionButton(context), _chooseCategoryAction(), ], ); diff --git a/lib/screens/RandomComicsScreen.dart b/lib/screens/RandomComicsScreen.dart index 94b6aad..002e7e8 100644 --- a/lib/screens/RandomComicsScreen.dart +++ b/lib/screens/RandomComicsScreen.dart @@ -4,7 +4,9 @@ import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/config/ListLayout.dart'; import 'package:pikapika/basic/config/ShadowCategories.dart'; +import '../basic/config/Address.dart'; import 'components/ComicListBuilder.dart'; +import 'components/Common.dart'; import 'components/RightClickPop.dart'; // 随机漫画页面 @@ -31,8 +33,8 @@ class _RandomComicsScreenState extends State { appBar: AppBar( title: const Text('随机本子'), actions: [ - shadowCategoriesActionButton(context), - chooseLayoutActionButton(context), + aPopMenu(context), + addressActionButton(context), ], ), body: ComicListBuilder(method.randomComics), diff --git a/lib/screens/RankingsScreen.dart b/lib/screens/RankingsScreen.dart index 47f9df9..3a3524c 100644 --- a/lib/screens/RankingsScreen.dart +++ b/lib/screens/RankingsScreen.dart @@ -8,8 +8,10 @@ import 'package:pikapika/screens/components/ContentBuilder.dart'; import '../basic/Cross.dart'; import '../basic/Navigator.dart'; +import '../basic/config/Address.dart'; import 'ComicsScreen.dart'; import 'components/ComicListBuilder.dart'; +import 'components/Common.dart'; import 'components/FitButton.dart'; import 'components/RightClickPop.dart'; @@ -32,8 +34,8 @@ class RankingsScreen extends StatelessWidget { appBar: AppBar( title: const Text('排行榜'), actions: [ - shadowCategoriesActionButton(context), - chooseLayoutActionButton(context), + aPopMenu(context), + addressActionButton(context), ], ), body: DefaultTabController( diff --git a/lib/screens/SearchScreen.dart b/lib/screens/SearchScreen.dart index e9dbf71..6b7923a 100644 --- a/lib/screens/SearchScreen.dart +++ b/lib/screens/SearchScreen.dart @@ -6,6 +6,7 @@ import 'package:pikapika/basic/store/Categories.dart'; import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/screens/components/RightClickPop.dart'; import '../basic/Entities.dart'; +import '../basic/config/Address.dart'; import '../basic/config/IconLoading.dart'; import 'components/ComicPager.dart'; import 'components/Common.dart'; @@ -51,6 +52,7 @@ class _SearchScreenState extends State { title: Text("${categoryTitle(widget.category)} ${widget.keyword}"), actions: [ aPopMenu(context), + addressActionButton(context), _chooseCategoryAction(), _searchBar.getSearchAction(context), ],