From a898bbc438100cfed4644b2b57d24f0da3f6eaba Mon Sep 17 00:00:00 2001 From: niuhuan Date: Wed, 12 Apr 2023 17:48:48 +0800 Subject: [PATCH] :sparkless: Hidden fd icon setting --- ci/version.code.txt | 2 +- ci/version.info.txt | 8 ++---- lib/basic/config/HiddenFdIcon.dart | 33 ++++++++++++++++++++++++ lib/basic/config/WillPopNotice.dart | 20 ++++----------- lib/screens/InitScreen.dart | 2 ++ lib/screens/ProScreen.dart | 22 +++------------- lib/screens/SettingsScreen.dart | 2 ++ lib/screens/SpaceScreen.dart | 40 ++++++++++++++++------------- pubspec.yaml | 2 +- 9 files changed, 72 insertions(+), 59 deletions(-) create mode 100644 lib/basic/config/HiddenFdIcon.dart diff --git a/ci/version.code.txt b/ci/version.code.txt index 75e4760..0d687f1 100644 --- a/ci/version.code.txt +++ b/ci/version.code.txt @@ -1 +1 @@ -v1.7.2 \ No newline at end of file +v1.7.3 \ No newline at end of file diff --git a/ci/version.info.txt b/ci/version.info.txt index ba3c04f..b1d8d11 100644 --- a/ci/version.info.txt +++ b/ci/version.info.txt @@ -1,6 +1,2 @@ -v1.7.2 -- [x] 🐛 修复安卓13导入导出的问题 -- [x] 🐛 修复测速不好用的问题 -- [x] ♻️ 梳理一些权限 -- [x] ✨ 增加批量下载功能 -- [x] ✨ 增加PAT入会发电 +v1.7.3 +- [x] ✨ 可以隐藏发电图标 diff --git a/lib/basic/config/HiddenFdIcon.dart b/lib/basic/config/HiddenFdIcon.dart new file mode 100644 index 0000000..7324bbb --- /dev/null +++ b/lib/basic/config/HiddenFdIcon.dart @@ -0,0 +1,33 @@ +import 'package:event/event.dart'; +import 'package:flutter/material.dart'; +import '../Method.dart'; + +const _propertyName = "hiddenFdIcon"; + +late bool _hiddenFdIcon; + + bool get hiddenFdIcon => _hiddenFdIcon; + +var hiddenFdIconEvent = Event(); + +Future initHiddenFdIcon() async { + _hiddenFdIcon = (await method.loadProperty(_propertyName, "false")) == "true"; +} + +Widget hiddenFdIconSetting() { + return StatefulBuilder( + builder: (BuildContext context, void Function(void Function()) setState) { + return SwitchListTile( + title: const Text("隐藏个人空间的发电图标"), + subtitle: Text(_hiddenFdIcon ? "是" : "否"), + value: _hiddenFdIcon, + onChanged: (value) async { + await method.saveProperty(_propertyName, "$value"); + _hiddenFdIcon = value; + setState(() {}); + hiddenFdIconEvent.broadcast(); + }, + ); + }, + ); +} diff --git a/lib/basic/config/WillPopNotice.dart b/lib/basic/config/WillPopNotice.dart index 4ba89eb..2f453fd 100644 --- a/lib/basic/config/WillPopNotice.dart +++ b/lib/basic/config/WillPopNotice.dart @@ -1,6 +1,4 @@ import 'package:flutter/material.dart'; - -import '../Common.dart'; import '../Method.dart'; const _propertyName = "willPopNotice"; @@ -15,24 +13,16 @@ bool willPopNotice() { return _willPopNotice; } -Future _chooseWillPopNotice(BuildContext context) async { - String? result = - await chooseListDialog(context, "退出APP的提示", ["是", "否"]); - if (result != null) { - var target = result == "是"; - await method.saveProperty(_propertyName, "$target"); - _willPopNotice = target; - } -} - Widget willPopNoticeSetting() { return StatefulBuilder( builder: (BuildContext context, void Function(void Function()) setState) { - return ListTile( + return SwitchListTile( title: const Text("退出APP的提示"), subtitle: Text(_willPopNotice ? "是" : "否"), - onTap: () async { - await _chooseWillPopNotice(context); + value: _willPopNotice, + onChanged: (value) async { + await method.saveProperty(_propertyName, "$value"); + _willPopNotice = value; setState(() {}); }, ); diff --git a/lib/screens/InitScreen.dart b/lib/screens/InitScreen.dart index 9b75a7e..c450ea3 100644 --- a/lib/screens/InitScreen.dart +++ b/lib/screens/InitScreen.dart @@ -45,6 +45,7 @@ import 'package:uri_to_file/uri_to_file.dart'; import '../basic/config/DownloadCachePath.dart'; import '../basic/config/ExportPath.dart'; import '../basic/config/ExportRename.dart'; +import '../basic/config/HiddenFdIcon.dart'; import '../basic/config/IconLoading.dart'; import '../basic/config/IsPro.dart'; import '../basic/config/WebDav.dart'; @@ -109,6 +110,7 @@ class _InitScreenState extends State { await reloadIsPro(); autoCheckNewVersion(); await initWillPopNotice(); + await initHiddenFdIcon(); await initShowCommentAtDownload(); await initDownloadCachePath(); await initUseApiLoadImage(); diff --git a/lib/screens/ProScreen.dart b/lib/screens/ProScreen.dart index 7821c5d..faaf598 100644 --- a/lib/screens/ProScreen.dart +++ b/lib/screens/ProScreen.dart @@ -67,14 +67,10 @@ class _ProScreenState extends State { const Padding( padding: EdgeInsets.all(20), child: Text( - "去\"关于\"界面找到维护地址可获得发电指引\n\n" - "1. \"签到/游戏/兑换\" \n" - " (1). \"我曾经发过电\"可同步相应发电状态\n" - " (2). \"我刚才发了电\"兑换作者给您的礼物卡\n" - "\n" - "2. \"PAT入会\"\n" - " 🔗将社区账号链接到软件, 同步成员状态, 订阅式发电" - "", + "去\"关于\"界面找到维护地址可获得发电指引\n" + "\n \"我曾经发过电\"可同步相应发电状态" + "\n \"我刚才发了电\"兑换神秘代码" + "\n\n发电小功能: 多线程下载 / 批量导入导出下载", ), ), const Divider(), @@ -120,16 +116,6 @@ class _ProScreenState extends State { const Divider(), ...patPro(), const Divider(), - const Padding( - padding: EdgeInsets.all(20), - child: Text( - "发电小功能 \n" - " 多线程下载\n" - " 批量导入导出\n" - " 跳页", - ), - ), - const Divider(), const Divider(), ], ), diff --git a/lib/screens/SettingsScreen.dart b/lib/screens/SettingsScreen.dart index 50d76b1..0b8424b 100644 --- a/lib/screens/SettingsScreen.dart +++ b/lib/screens/SettingsScreen.dart @@ -34,6 +34,7 @@ import 'package:pikapika/screens/components/RightClickPop.dart'; import '../basic/config/Authentication.dart'; import '../basic/config/CategoriesColumnCount.dart'; import '../basic/config/DownloadCachePath.dart'; +import '../basic/config/HiddenFdIcon.dart'; import '../basic/config/UsingRightClickPop.dart'; import '../basic/config/WebDav.dart'; import '../basic/config/WillPopNotice.dart'; @@ -123,6 +124,7 @@ class _SettingsScreenState extends State { iconLoadingSetting(), categoriesColumnCountSetting(), willPopNoticeSetting(), + hiddenFdIconSetting(), pagerActionSetting(), contentFailedReloadActionSetting(), timeZoneSetting(), diff --git a/lib/screens/SpaceScreen.dart b/lib/screens/SpaceScreen.dart index a54b5c7..4c31e57 100644 --- a/lib/screens/SpaceScreen.dart +++ b/lib/screens/SpaceScreen.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:pikapika/basic/Common.dart'; +import 'package:pikapika/basic/config/HiddenFdIcon.dart'; import 'package:pikapika/basic/config/Version.dart'; import 'package:pikapika/screens/AboutScreen.dart'; import 'package:pikapika/screens/AccountScreen.dart'; @@ -30,6 +31,7 @@ class _SpaceScreenState extends State { void initState() { versionEvent.subscribe(_onEvent); proEvent.subscribe(_onEvent); + hiddenFdIconEvent.subscribe(_onEvent); super.initState(); } @@ -37,6 +39,7 @@ class _SpaceScreenState extends State { void dispose() { versionEvent.unsubscribe(_onEvent); proEvent.unsubscribe(_onEvent); + hiddenFdIconEvent.unsubscribe(_onEvent); super.dispose(); } @@ -53,14 +56,13 @@ class _SpaceScreenState extends State { IconButton( onPressed: () async { bool result = - await confirmDialog(context, '退出登录', '您确认要退出当前账号吗?'); + await confirmDialog(context, '退出登录', '您确认要退出当前账号吗?'); if (result) { await method.clearToken(); await method.setPassword(""); Navigator.pushReplacement( context, - mixRoute( - builder: (context) => const AccountScreen()), + mixRoute(builder: (context) => const AccountScreen()), ); } }, @@ -78,17 +80,21 @@ class _SpaceScreenState extends State { badge: latestVersion() == null ? null : "1", ), ), - IconButton( - onPressed: () { - Navigator.of(context) - .push(mixRoute(builder: (BuildContext context) { - return const ProScreen(); - })); - }, - icon: Icon( - isPro ? Icons.offline_bolt : Icons.offline_bolt_outlined, - ), - ), + ...hiddenFdIcon + ? [] + : [ + IconButton( + onPressed: () { + Navigator.of(context) + .push(mixRoute(builder: (BuildContext context) { + return const ProScreen(); + })); + }, + icon: Icon( + isPro ? Icons.offline_bolt : Icons.offline_bolt_outlined, + ), + ), + ], IconButton( onPressed: () { Navigator.push( @@ -109,8 +115,7 @@ class _SpaceScreenState extends State { onTap: () { Navigator.push( context, - mixRoute( - builder: (context) => const FavouritePaperScreen()), + mixRoute(builder: (context) => const FavouritePaperScreen()), ); }, title: const Text('我的收藏'), @@ -130,8 +135,7 @@ class _SpaceScreenState extends State { onTap: () { Navigator.push( context, - mixRoute( - builder: (context) => const DownloadListScreen()), + mixRoute(builder: (context) => const DownloadListScreen()), ); }, title: const Text('我的下载'), diff --git a/pubspec.yaml b/pubspec.yaml index b43e4b4..21b97ea 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.7.1+17 +version: 1.7.3+18 environment: sdk: ">=2.12.0 <3.0.0"