hidden other platforms settings
This commit is contained in:
parent
ea143ee9fe
commit
9e2027ef45
|
@ -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 {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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}");
|
||||
_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(
|
||||
|
|
|
@ -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';
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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("文件夹选择器默认路径"),
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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,
|
||||
),
|
||||
),
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue