hidden other platforms settings

This commit is contained in:
niuhuan 2021-10-13 21:57:35 +08:00
parent ea143ee9fe
commit 9e2027ef45
13 changed files with 92 additions and 45 deletions

View File

@ -194,6 +194,14 @@ class MainActivity : FlutterActivity() {
private fun setMode(string: String) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mixDisplay()?.let { display ->
if (string == ""){
uiThreadHandler.post {
window.attributes = window.attributes.also { attr ->
attr.preferredDisplayModeId = 0
}
}
return
}
return display.supportedModes.forEach { mode ->
if (mode.toString() == string) {
uiThreadHandler.post {

View File

@ -1,4 +1,5 @@
import 'dart:convert';
// ,
import 'dart:io';
import 'package:flutter/material.dart';
@ -31,7 +32,7 @@ Future<void> chooseAndroidDisplayMode(BuildContext context) async {
if (Platform.isAndroid) {
List<String> list = [""];
list.addAll(modes);
String? result = await chooseListDialog<String>(context, "安卓屏幕刷新率 \n(若为置空操作重启应用生效)", list);
String? result = await chooseListDialog<String>(context, "安卓屏幕刷新率", list);
if (result != null) {
await method.saveProperty(_propertyName, "$result");
_androidDisplayMode = result;
@ -39,3 +40,21 @@ Future<void> chooseAndroidDisplayMode(BuildContext context) async {
}
}
}
Widget androidDisplayModeSetting() {
if (Platform.isAndroid) {
return StatefulBuilder(
builder: (BuildContext context, void Function(void Function()) setState) {
return ListTile(
title: Text("屏幕刷新率(安卓)"),
subtitle: Text(androidDisplayModeName()),
onTap: () async {
await chooseAndroidDisplayMode(context);
setState(() {});
},
);
},
);
}
return Container();
}

View File

@ -4,14 +4,18 @@ import 'package:pikapi/basic/Method.dart';
late String _autoCleanSec;
Future<dynamic> autoClean() async {
_autoCleanSec = await method.loadProperty("autoCleanSec", "${3600 * 24 * 30}");
await method.autoClean(_autoCleanSec);
_autoCleanSec =
await method.loadProperty("autoCleanSec", "${3600 * 24 * 30}");
if ("0" != _autoCleanSec) {
await method.autoClean(_autoCleanSec);
}
}
var _autoCleanMap = {
"一个月前": "${3600 * 24 * 30}",
"一周前": "${3600 * 24 * 7}",
"一天前": "${3600 * 24 * 1}",
"不自动清理": "${0}",
};
String currentAutoCleanSec() {
@ -28,7 +32,7 @@ Future<void> chooseAutoCleanSec(BuildContext context) async {
context: context,
builder: (BuildContext context) {
return SimpleDialog(
title: Text('选择分流'),
title: Text('选择自动清理周期'),
children: <Widget>[
..._autoCleanMap.entries.map(
(e) => SimpleDialogOption(

View File

@ -23,7 +23,7 @@ String currentChooserRoot() {
} else if (Platform.isLinux) {
return '/';
} else if (Platform.isAndroid) {
return '/storage/emulated/0';
return '/storage/emulated/0/Download';
} else {
throw 'error';
}

View File

@ -1,5 +1,7 @@
///
import 'dart:io';
import 'package:flutter/material.dart';
import '../Common.dart';
@ -27,3 +29,21 @@ Future<void> chooseKeyboardController(BuildContext context) async {
keyboardController = target;
}
}
Widget keyboardControllerSetting() {
if (Platform.isWindows || Platform.isMacOS || Platform.isLinux) {
return StatefulBuilder(
builder: (BuildContext context, void Function(void Function()) setState) {
return ListTile(
title: Text("阅读器键盘翻页(仅PC)"),
subtitle: Text(keyboardControllerName()),
onTap: () async {
await chooseKeyboardController(context);
setState(() {});
},
);
},
);
}
return Container();
}

View File

@ -1,5 +1,7 @@
///
import 'dart:io';
import 'package:flutter/material.dart';
import '../Common.dart';
@ -10,7 +12,8 @@ const propertyName = "volumeController";
late bool volumeController;
Future<void> initVolumeController() async {
volumeController = (await method.loadProperty(propertyName, "false")) == "true";
volumeController =
(await method.loadProperty(propertyName, "false")) == "true";
}
String volumeControllerName() {
@ -26,3 +29,19 @@ Future<void> chooseVolumeController(BuildContext context) async {
volumeController = target;
}
}
Widget volumeControllerSetting() {
if (Platform.isAndroid) {
return StatefulBuilder(builder:
(BuildContext context, void Function(void Function()) setState) {
return ListTile(
title: Text("阅读器音量键翻页(仅安卓)"),
subtitle: Text(volumeControllerName()),
onTap: () async {
await chooseVolumeController(context);
setState(() {});
});
});
}
return Container();
}

View File

@ -6,17 +6,17 @@ import 'package:pikapi/basic/Navigatior.dart';
import 'basic/config/Themes.dart';
void main() {
runApp(PikachuApp());
runApp(PikapiApp());
}
class PikachuApp extends StatefulWidget {
const PikachuApp({Key? key}) : super(key: key);
class PikapiApp extends StatefulWidget {
const PikapiApp({Key? key}) : super(key: key);
@override
State<StatefulWidget> createState() => _PikachuAppState();
State<StatefulWidget> createState() => _PikapiAppState();
}
class _PikachuAppState extends State<PikachuApp> {
class _PikapiAppState extends State<PikapiApp> {
@override
void initState() {
themeEvent.subscribe(_onChangeTheme);

View File

@ -1,12 +1,9 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:pikapi/basic/Cross.dart';
class AboutScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
var theme = Theme.of(context);
var size = MediaQuery.of(context).size;
var min = size.width < size.height ? size.width : size.height;

View File

@ -1,4 +1,3 @@
import 'package:event/event.dart';
import 'package:flutter/material.dart';
import 'package:flutter_search_bar/flutter_search_bar.dart';
import 'package:pikapi/basic/Common.dart';

View File

@ -73,22 +73,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
setState(() {});
},
),
ListTile(
title: Text("阅读器音量键翻页(仅安卓)"),
subtitle: Text(volumeControllerName()),
onTap: () async {
await chooseVolumeController(context);
setState(() {});
},
),
ListTile(
title: Text("阅读器键盘翻页(仅PC)"),
subtitle: Text(keyboardControllerName()),
onTap: () async {
await chooseKeyboardController(context);
setState(() {});
},
),
volumeControllerSetting(),
keyboardControllerSetting(),
Divider(),
ListTile(
title: Text("封印"),
@ -141,14 +127,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
title: Text('清除缓存'),
),
Divider(),
ListTile(
title: Text("屏幕刷新率(安卓)"),
subtitle: Text(androidDisplayModeName()),
onTap: () async {
await chooseAndroidDisplayMode(context);
setState(() {});
},
),
androidDisplayModeSetting(),
Divider(),
ListTile(
title: Text("文件夹选择器默认路径"),

View File

@ -6,7 +6,6 @@ import 'package:event/event.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:photo_view/photo_view_gallery.dart';
import 'package:pikapi/basic/Channels.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Cross.dart';
import 'package:pikapi/basic/Entities.dart';

View File

@ -197,8 +197,7 @@ class _RemoteImageState extends State<RemoteImage> {
@override
void initState() {
_mock =
widget.fileServer == "" || widget.fileServer.contains(".xyz/");
_mock = widget.fileServer == "" || widget.fileServer.contains(".xyz/");
if (!_mock) {
_future = method
.remoteImageData(widget.fileServer, widget.path)
@ -261,13 +260,17 @@ Widget buildError(double? width, double? height) {
}
Widget buildLoading(double? width, double? height) {
double? size;
if (width != null && height != null) {
size = width < height ? width : height;
}
return Container(
width: width,
height: height,
child: Center(
child: Icon(
Icons.downloading,
size: width,
size: size,
color: Colors.black12,
),
),

View File

@ -13,7 +13,7 @@ import 'package:pikapi/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(PikachuApp());
await tester.pumpWidget(PikapiApp());
// Verify that our counter starts at 0.
expect(find.text('0'), findsOneWidget);