:sparkless: Hidden fd icon setting
This commit is contained in:
parent
4a2489dcf4
commit
a898bbc438
|
@ -1 +1 @@
|
||||||
v1.7.2
|
v1.7.3
|
|
@ -1,6 +1,2 @@
|
||||||
v1.7.2
|
v1.7.3
|
||||||
- [x] 🐛 修复安卓13导入导出的问题
|
- [x] ✨ 可以隐藏发电图标
|
||||||
- [x] 🐛 修复测速不好用的问题
|
|
||||||
- [x] ♻️ 梳理一些权限
|
|
||||||
- [x] ✨ 增加批量下载功能
|
|
||||||
- [x] ✨ 增加PAT入会发电
|
|
||||||
|
|
|
@ -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<EventArgs>();
|
||||||
|
|
||||||
|
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();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
|
@ -1,6 +1,4 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import '../Common.dart';
|
|
||||||
import '../Method.dart';
|
import '../Method.dart';
|
||||||
|
|
||||||
const _propertyName = "willPopNotice";
|
const _propertyName = "willPopNotice";
|
||||||
|
@ -15,24 +13,16 @@ bool willPopNotice() {
|
||||||
return _willPopNotice;
|
return _willPopNotice;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _chooseWillPopNotice(BuildContext context) async {
|
|
||||||
String? result =
|
|
||||||
await chooseListDialog<String>(context, "退出APP的提示", ["是", "否"]);
|
|
||||||
if (result != null) {
|
|
||||||
var target = result == "是";
|
|
||||||
await method.saveProperty(_propertyName, "$target");
|
|
||||||
_willPopNotice = target;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget willPopNoticeSetting() {
|
Widget willPopNoticeSetting() {
|
||||||
return StatefulBuilder(
|
return StatefulBuilder(
|
||||||
builder: (BuildContext context, void Function(void Function()) setState) {
|
builder: (BuildContext context, void Function(void Function()) setState) {
|
||||||
return ListTile(
|
return SwitchListTile(
|
||||||
title: const Text("退出APP的提示"),
|
title: const Text("退出APP的提示"),
|
||||||
subtitle: Text(_willPopNotice ? "是" : "否"),
|
subtitle: Text(_willPopNotice ? "是" : "否"),
|
||||||
onTap: () async {
|
value: _willPopNotice,
|
||||||
await _chooseWillPopNotice(context);
|
onChanged: (value) async {
|
||||||
|
await method.saveProperty(_propertyName, "$value");
|
||||||
|
_willPopNotice = value;
|
||||||
setState(() {});
|
setState(() {});
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
@ -45,6 +45,7 @@ import 'package:uri_to_file/uri_to_file.dart';
|
||||||
import '../basic/config/DownloadCachePath.dart';
|
import '../basic/config/DownloadCachePath.dart';
|
||||||
import '../basic/config/ExportPath.dart';
|
import '../basic/config/ExportPath.dart';
|
||||||
import '../basic/config/ExportRename.dart';
|
import '../basic/config/ExportRename.dart';
|
||||||
|
import '../basic/config/HiddenFdIcon.dart';
|
||||||
import '../basic/config/IconLoading.dart';
|
import '../basic/config/IconLoading.dart';
|
||||||
import '../basic/config/IsPro.dart';
|
import '../basic/config/IsPro.dart';
|
||||||
import '../basic/config/WebDav.dart';
|
import '../basic/config/WebDav.dart';
|
||||||
|
@ -109,6 +110,7 @@ class _InitScreenState extends State<InitScreen> {
|
||||||
await reloadIsPro();
|
await reloadIsPro();
|
||||||
autoCheckNewVersion();
|
autoCheckNewVersion();
|
||||||
await initWillPopNotice();
|
await initWillPopNotice();
|
||||||
|
await initHiddenFdIcon();
|
||||||
await initShowCommentAtDownload();
|
await initShowCommentAtDownload();
|
||||||
await initDownloadCachePath();
|
await initDownloadCachePath();
|
||||||
await initUseApiLoadImage();
|
await initUseApiLoadImage();
|
||||||
|
|
|
@ -67,14 +67,10 @@ class _ProScreenState extends State<ProScreen> {
|
||||||
const Padding(
|
const Padding(
|
||||||
padding: EdgeInsets.all(20),
|
padding: EdgeInsets.all(20),
|
||||||
child: Text(
|
child: Text(
|
||||||
"去\"关于\"界面找到维护地址可获得发电指引\n\n"
|
"去\"关于\"界面找到维护地址可获得发电指引\n"
|
||||||
"1. \"签到/游戏/兑换\" \n"
|
"\n \"我曾经发过电\"可同步相应发电状态"
|
||||||
" (1). \"我曾经发过电\"可同步相应发电状态\n"
|
"\n \"我刚才发了电\"兑换神秘代码"
|
||||||
" (2). \"我刚才发了电\"兑换作者给您的礼物卡\n"
|
"\n\n发电小功能: 多线程下载 / 批量导入导出下载",
|
||||||
"\n"
|
|
||||||
"2. \"PAT入会\"\n"
|
|
||||||
" 🔗将社区账号链接到软件, 同步成员状态, 订阅式发电"
|
|
||||||
"",
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Divider(),
|
const Divider(),
|
||||||
|
@ -120,16 +116,6 @@ class _ProScreenState extends State<ProScreen> {
|
||||||
const Divider(),
|
const Divider(),
|
||||||
...patPro(),
|
...patPro(),
|
||||||
const Divider(),
|
const Divider(),
|
||||||
const Padding(
|
|
||||||
padding: EdgeInsets.all(20),
|
|
||||||
child: Text(
|
|
||||||
"发电小功能 \n"
|
|
||||||
" 多线程下载\n"
|
|
||||||
" 批量导入导出\n"
|
|
||||||
" 跳页",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const Divider(),
|
|
||||||
const Divider(),
|
const Divider(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
@ -34,6 +34,7 @@ import 'package:pikapika/screens/components/RightClickPop.dart';
|
||||||
import '../basic/config/Authentication.dart';
|
import '../basic/config/Authentication.dart';
|
||||||
import '../basic/config/CategoriesColumnCount.dart';
|
import '../basic/config/CategoriesColumnCount.dart';
|
||||||
import '../basic/config/DownloadCachePath.dart';
|
import '../basic/config/DownloadCachePath.dart';
|
||||||
|
import '../basic/config/HiddenFdIcon.dart';
|
||||||
import '../basic/config/UsingRightClickPop.dart';
|
import '../basic/config/UsingRightClickPop.dart';
|
||||||
import '../basic/config/WebDav.dart';
|
import '../basic/config/WebDav.dart';
|
||||||
import '../basic/config/WillPopNotice.dart';
|
import '../basic/config/WillPopNotice.dart';
|
||||||
|
@ -123,6 +124,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||||
iconLoadingSetting(),
|
iconLoadingSetting(),
|
||||||
categoriesColumnCountSetting(),
|
categoriesColumnCountSetting(),
|
||||||
willPopNoticeSetting(),
|
willPopNoticeSetting(),
|
||||||
|
hiddenFdIconSetting(),
|
||||||
pagerActionSetting(),
|
pagerActionSetting(),
|
||||||
contentFailedReloadActionSetting(),
|
contentFailedReloadActionSetting(),
|
||||||
timeZoneSetting(),
|
timeZoneSetting(),
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:pikapika/basic/Common.dart';
|
import 'package:pikapika/basic/Common.dart';
|
||||||
|
import 'package:pikapika/basic/config/HiddenFdIcon.dart';
|
||||||
import 'package:pikapika/basic/config/Version.dart';
|
import 'package:pikapika/basic/config/Version.dart';
|
||||||
import 'package:pikapika/screens/AboutScreen.dart';
|
import 'package:pikapika/screens/AboutScreen.dart';
|
||||||
import 'package:pikapika/screens/AccountScreen.dart';
|
import 'package:pikapika/screens/AccountScreen.dart';
|
||||||
|
@ -30,6 +31,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
|
||||||
void initState() {
|
void initState() {
|
||||||
versionEvent.subscribe(_onEvent);
|
versionEvent.subscribe(_onEvent);
|
||||||
proEvent.subscribe(_onEvent);
|
proEvent.subscribe(_onEvent);
|
||||||
|
hiddenFdIconEvent.subscribe(_onEvent);
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,6 +39,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
|
||||||
void dispose() {
|
void dispose() {
|
||||||
versionEvent.unsubscribe(_onEvent);
|
versionEvent.unsubscribe(_onEvent);
|
||||||
proEvent.unsubscribe(_onEvent);
|
proEvent.unsubscribe(_onEvent);
|
||||||
|
hiddenFdIconEvent.unsubscribe(_onEvent);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,8 +62,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
|
||||||
await method.setPassword("");
|
await method.setPassword("");
|
||||||
Navigator.pushReplacement(
|
Navigator.pushReplacement(
|
||||||
context,
|
context,
|
||||||
mixRoute(
|
mixRoute(builder: (context) => const AccountScreen()),
|
||||||
builder: (context) => const AccountScreen()),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -78,6 +80,9 @@ class _SpaceScreenState extends State<SpaceScreen> {
|
||||||
badge: latestVersion() == null ? null : "1",
|
badge: latestVersion() == null ? null : "1",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
...hiddenFdIcon
|
||||||
|
? []
|
||||||
|
: [
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.of(context)
|
Navigator.of(context)
|
||||||
|
@ -89,6 +94,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
|
||||||
isPro ? Icons.offline_bolt : Icons.offline_bolt_outlined,
|
isPro ? Icons.offline_bolt : Icons.offline_bolt_outlined,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
],
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.push(
|
Navigator.push(
|
||||||
|
@ -109,8 +115,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.push(
|
Navigator.push(
|
||||||
context,
|
context,
|
||||||
mixRoute(
|
mixRoute(builder: (context) => const FavouritePaperScreen()),
|
||||||
builder: (context) => const FavouritePaperScreen()),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
title: const Text('我的收藏'),
|
title: const Text('我的收藏'),
|
||||||
|
@ -130,8 +135,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.push(
|
Navigator.push(
|
||||||
context,
|
context,
|
||||||
mixRoute(
|
mixRoute(builder: (context) => const DownloadListScreen()),
|
||||||
builder: (context) => const DownloadListScreen()),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
title: const Text('我的下载'),
|
title: const Text('我的下载'),
|
||||||
|
|
|
@ -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.
|
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
||||||
# Read more about iOS versioning at
|
# Read more about iOS versioning at
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
version: 1.7.1+17
|
version: 1.7.3+18
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.12.0 <3.0.0"
|
sdk: ">=2.12.0 <3.0.0"
|
||||||
|
|
Loading…
Reference in New Issue