From fde1b0ae449f1df4035a571332f43bc7cffd5a0a Mon Sep 17 00:00:00 2001 From: niuhuan Date: Thu, 4 Nov 2021 11:45:22 +0800 Subject: [PATCH] move setting to unit --- lib/basic/config/AutoClean.dart | 16 +++ lib/basic/config/AutoFullScreen.dart | 15 +++ lib/basic/config/ChooserRoot.dart | 15 +++ .../config/ContentFailedReloadAction.dart | 13 +++ lib/basic/config/FullScreenAction.dart | 15 +++ lib/basic/config/FullScreenUI.dart | 19 +++- lib/basic/config/PagerAction.dart | 15 +++ lib/basic/config/ReaderDirection.dart | 15 +++ lib/basic/config/ReaderType.dart | 15 +++ lib/screens/AboutScreen.dart | 1 + lib/screens/SettingsScreen.dart | 99 +++---------------- 11 files changed, 151 insertions(+), 87 deletions(-) diff --git a/lib/basic/config/AutoClean.dart b/lib/basic/config/AutoClean.dart index 8911e14..5d15813 100644 --- a/lib/basic/config/AutoClean.dart +++ b/lib/basic/config/AutoClean.dart @@ -51,3 +51,19 @@ Future chooseAutoCleanSec(BuildContext context) async { _autoCleanSec = choose; } } + + +Widget autoCleanSecSetting() { + return StatefulBuilder( + builder: (BuildContext context, void Function(void Function()) setState) { + return ListTile( + title: Text("自动清理缓存"), + subtitle: Text(currentAutoCleanSec()), + onTap: () async { + await chooseAutoCleanSec(context); + setState(() {}); + }, + ); + }, + ); +} diff --git a/lib/basic/config/AutoFullScreen.dart b/lib/basic/config/AutoFullScreen.dart index c31c08a..cf73cee 100644 --- a/lib/basic/config/AutoFullScreen.dart +++ b/lib/basic/config/AutoFullScreen.dart @@ -31,3 +31,18 @@ Future chooseAutoFullScreen(BuildContext context) async { _autoFullScreen = target; } } + +Widget autoFullScreenSetting() { + return StatefulBuilder( + builder: (BuildContext context, void Function(void Function()) setState) { + return ListTile( + title: Text("进入阅读器自动全屏"), + subtitle: Text(autoFullScreenName()), + onTap: () async { + await chooseAutoFullScreen(context); + setState(() {}); + }, + ); + }, + ); +} diff --git a/lib/basic/config/ChooserRoot.dart b/lib/basic/config/ChooserRoot.dart index 1d4197f..2f132ba 100644 --- a/lib/basic/config/ChooserRoot.dart +++ b/lib/basic/config/ChooserRoot.dart @@ -47,3 +47,18 @@ Future inputChooserRoot(BuildContext context) async { _chooserRoot = input; } } + +Widget chooserRootSetting() { + return StatefulBuilder( + builder: (BuildContext context, void Function(void Function()) setState) { + return ListTile( + title: Text("文件夹选择器默认路径"), + subtitle: Text(currentChooserRoot()), + onTap: () async { + await inputChooserRoot(context); + setState(() {}); + }, + ); + }, + ); +} diff --git a/lib/basic/config/ContentFailedReloadAction.dart b/lib/basic/config/ContentFailedReloadAction.dart index af589ee..85fbbd5 100644 --- a/lib/basic/config/ContentFailedReloadAction.dart +++ b/lib/basic/config/ContentFailedReloadAction.dart @@ -54,3 +54,16 @@ Future chooseContentFailedReloadAction(BuildContext context) async { contentFailedReloadAction = result; } } + +Widget contentFailedReloadActionSetting(){ + return StatefulBuilder(builder: (BuildContext context, void Function(void Function()) setState) { + return ListTile( + title: Text("加载失败时"), + subtitle: Text(currentContentFailedReloadActionName()), + onTap: () async { + await chooseContentFailedReloadAction(context); + setState(() {}); + }, + ); + },); +} \ No newline at end of file diff --git a/lib/basic/config/FullScreenAction.dart b/lib/basic/config/FullScreenAction.dart index 7e533bb..9f45429 100644 --- a/lib/basic/config/FullScreenAction.dart +++ b/lib/basic/config/FullScreenAction.dart @@ -52,3 +52,18 @@ Future chooseFullScreenAction(BuildContext context) async { fullScreenAction = result; } } + +Widget fullScreenActionSetting() { + return StatefulBuilder( + builder: (BuildContext context, void Function(void Function()) setState) { + return ListTile( + title: Text("进入全屏的方式"), + subtitle: Text(currentFullScreenActionName()), + onTap: () async { + await chooseFullScreenAction(context); + setState(() {}); + }, + ); + }, + ); +} diff --git a/lib/basic/config/FullScreenUI.dart b/lib/basic/config/FullScreenUI.dart index 37db749..588b9e4 100644 --- a/lib/basic/config/FullScreenUI.dart +++ b/lib/basic/config/FullScreenUI.dart @@ -48,8 +48,8 @@ String currentFullScreenUIName() { } Future chooseFullScreenUI(BuildContext context) async { - FullScreenUI? result = await chooseMapDialog( - context, fullScreenUIMap, "选择全屏UI"); + FullScreenUI? result = + await chooseMapDialog(context, fullScreenUIMap, "选择全屏UI"); if (result != null) { await method.saveProperty(_propertyName, result.toString()); fullScreenUI = result; @@ -70,3 +70,18 @@ void switchFullScreenUI() { print(fullScreenUI); SystemChrome.setEnabledSystemUIOverlays(list); } + +Widget fullScreenUISetting() { + return StatefulBuilder( + builder: (BuildContext context, void Function(void Function()) setState) { + return ListTile( + title: Text("全屏UI"), + subtitle: Text(currentFullScreenUIName()), + onTap: () async { + await chooseFullScreenUI(context); + setState(() {}); + }, + ); + }, + ); +} diff --git a/lib/basic/config/PagerAction.dart b/lib/basic/config/PagerAction.dart index ece808d..b377859 100644 --- a/lib/basic/config/PagerAction.dart +++ b/lib/basic/config/PagerAction.dart @@ -50,3 +50,18 @@ Future choosePagerAction(BuildContext context) async { currentPagerAction = result; } } + +Widget pagerActionSetting() { + return StatefulBuilder( + builder: (BuildContext context, void Function(void Function()) setState) { + return ListTile( + title: Text("列表页加载方式"), + subtitle: Text(currentPagerActionName()), + onTap: () async { + await choosePagerAction(context); + setState(() {}); + }, + ); + }, + ); +} diff --git a/lib/basic/config/ReaderDirection.dart b/lib/basic/config/ReaderDirection.dart index 4c95c8f..00a6eb0 100644 --- a/lib/basic/config/ReaderDirection.dart +++ b/lib/basic/config/ReaderDirection.dart @@ -64,3 +64,18 @@ Future choosePagerDirection(BuildContext buildContext) async { gReaderDirection = choose; } } + +Widget readerDirectionSetting() { + return StatefulBuilder( + builder: (BuildContext context, void Function(void Function()) setState) { + return ListTile( + title: Text("阅读器方向"), + subtitle: Text(currentReaderDirectionName()), + onTap: () async { + await choosePagerDirection(context); + setState(() {}); + }, + ); + }, + ); +} diff --git a/lib/basic/config/ReaderType.dart b/lib/basic/config/ReaderType.dart index 7b2aedd..5797713 100644 --- a/lib/basic/config/ReaderType.dart +++ b/lib/basic/config/ReaderType.dart @@ -65,3 +65,18 @@ Future choosePagerType(BuildContext buildContext) async { gReaderType = t; } } + +Widget readerTypeSetting() { + return StatefulBuilder( + builder: (BuildContext context, void Function(void Function()) setState) { + return ListTile( + title: Text("阅读器模式"), + subtitle: Text(currentReaderTypeName()), + onTap: () async { + await choosePagerType(context); + setState(() {}); + }, + ); + }, + ); +} diff --git a/lib/screens/AboutScreen.dart b/lib/screens/AboutScreen.dart index cdc4a36..478d754 100644 --- a/lib/screens/AboutScreen.dart +++ b/lib/screens/AboutScreen.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; +// 关于 class AboutScreen extends StatelessWidget { @override Widget build(BuildContext context) { diff --git a/lib/screens/SettingsScreen.dart b/lib/screens/SettingsScreen.dart index db04092..ece9807 100644 --- a/lib/screens/SettingsScreen.dart +++ b/lib/screens/SettingsScreen.dart @@ -27,12 +27,7 @@ import 'package:pikapi/screens/components/NetworkSetting.dart'; import 'CleanScreen.dart'; import 'MigrateScreen.dart'; -class SettingsScreen extends StatefulWidget { - @override - State createState() => _SettingsScreenState(); -} - -class _SettingsScreenState extends State { +class SettingsScreen extends StatelessWidget { @override Widget build(BuildContext context) => Scaffold( appBar: AppBar(title: Text('设置')), @@ -42,76 +37,20 @@ class _SettingsScreenState extends State { NetworkSetting(), Divider(), qualitySetting(), - ListTile( - title: Text("阅读器模式"), - subtitle: Text(currentReaderTypeName()), - onTap: () async { - await choosePagerType(context); - setState(() {}); - }, - ), - ListTile( - title: Text("阅读器方向"), - subtitle: Text(currentReaderDirectionName()), - onTap: () async { - await choosePagerDirection(context); - setState(() {}); - }, - ), - ListTile( - title: Text("进入阅读器自动全屏"), - subtitle: Text(autoFullScreenName()), - onTap: () async { - await chooseAutoFullScreen(context); - setState(() {}); - }, - ), - ListTile( - title: Text("进入全屏的方式"), - subtitle: Text(currentFullScreenActionName()), - onTap: () async { - await chooseFullScreenAction(context); - setState(() {}); - }, - ), + readerTypeSetting(), + readerDirectionSetting(), + autoFullScreenSetting(), + fullScreenActionSetting(), volumeControllerSetting(), keyboardControllerSetting(), Divider(), shadowCategoriesSetting(), - ListTile( - title: Text("列表页加载方式"), - subtitle: Text(currentPagerActionName()), - onTap: () async { - await choosePagerAction(context); - setState(() {}); - }, - ), - ListTile( - title: Text("全屏UI"), - subtitle: Text(currentFullScreenUIName()), - onTap: () async { - await chooseFullScreenUI(context); - setState(() {}); - }, - ), - ListTile( - title: Text("加载失败时"), - subtitle: Text(currentContentFailedReloadActionName()), - onTap: () async { - await chooseContentFailedReloadAction(context); - setState(() {}); - }, - ), + pagerActionSetting(), + fullScreenUISetting(), + contentFailedReloadActionSetting(), timeZoneSetting(), Divider(), - ListTile( - title: Text("自动清理缓存"), - subtitle: Text(currentAutoCleanSec()), - onTap: () async { - await chooseAutoCleanSec(context); - setState(() {}); - }, - ), + autoCleanSecSetting(), ListTile( onTap: () { Navigator.push( @@ -125,34 +64,24 @@ class _SettingsScreenState extends State { androidDisplayModeSetting(), androidSecureFlagSetting(), Divider(), - ListTile( - title: Text("文件夹选择器默认路径"), - subtitle: Text(currentChooserRoot()), - onTap: () async { - await inputChooserRoot(context); - setState(() {}); - }, - ), + chooserRootSetting(), downloadThreadCountSetting(), downloadAndExportPathSetting(), fontSetting(), Divider(), - migrate(), + migrate(context), ], ), ); - Widget migrate() { + Widget migrate(BuildContext context) { if (Platform.isAndroid) { return ListTile( title: Text("文件迁移"), subtitle: Text("更换您的数据文件夹"), onTap: () async { - var f = await confirmDialog( - context, - "文件迁移", - "此功能菜单保存后, 需要重启程序, 您确认吗" - ); + var f = + await confirmDialog(context, "文件迁移", "此功能菜单保存后, 需要重启程序, 您确认吗"); if (f) { Navigator.of(context).pushAndRemoveUntil( MaterialPageRoute(builder: (BuildContext context) {