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) {
|
private fun setMode(string: String) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
mixDisplay()?.let { display ->
|
mixDisplay()?.let { display ->
|
||||||
|
if (string == ""){
|
||||||
|
uiThreadHandler.post {
|
||||||
|
window.attributes = window.attributes.also { attr ->
|
||||||
|
attr.preferredDisplayModeId = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
return display.supportedModes.forEach { mode ->
|
return display.supportedModes.forEach { mode ->
|
||||||
if (mode.toString() == string) {
|
if (mode.toString() == string) {
|
||||||
uiThreadHandler.post {
|
uiThreadHandler.post {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import 'dart:convert';
|
// 显示模式, 仅安卓有效
|
||||||
|
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
@ -31,7 +32,7 @@ Future<void> chooseAndroidDisplayMode(BuildContext context) async {
|
||||||
if (Platform.isAndroid) {
|
if (Platform.isAndroid) {
|
||||||
List<String> list = [""];
|
List<String> list = [""];
|
||||||
list.addAll(modes);
|
list.addAll(modes);
|
||||||
String? result = await chooseListDialog<String>(context, "安卓屏幕刷新率 \n(若为置空操作重启应用生效)", list);
|
String? result = await chooseListDialog<String>(context, "安卓屏幕刷新率", list);
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
await method.saveProperty(_propertyName, "$result");
|
await method.saveProperty(_propertyName, "$result");
|
||||||
_androidDisplayMode = 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;
|
late String _autoCleanSec;
|
||||||
|
|
||||||
Future<dynamic> autoClean() async {
|
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);
|
await method.autoClean(_autoCleanSec);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var _autoCleanMap = {
|
var _autoCleanMap = {
|
||||||
"一个月前": "${3600 * 24 * 30}",
|
"一个月前": "${3600 * 24 * 30}",
|
||||||
"一周前": "${3600 * 24 * 7}",
|
"一周前": "${3600 * 24 * 7}",
|
||||||
"一天前": "${3600 * 24 * 1}",
|
"一天前": "${3600 * 24 * 1}",
|
||||||
|
"不自动清理": "${0}",
|
||||||
};
|
};
|
||||||
|
|
||||||
String currentAutoCleanSec() {
|
String currentAutoCleanSec() {
|
||||||
|
@ -28,7 +32,7 @@ Future<void> chooseAutoCleanSec(BuildContext context) async {
|
||||||
context: context,
|
context: context,
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
return SimpleDialog(
|
return SimpleDialog(
|
||||||
title: Text('选择分流'),
|
title: Text('选择自动清理周期'),
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
..._autoCleanMap.entries.map(
|
..._autoCleanMap.entries.map(
|
||||||
(e) => SimpleDialogOption(
|
(e) => SimpleDialogOption(
|
||||||
|
|
|
@ -23,7 +23,7 @@ String currentChooserRoot() {
|
||||||
} else if (Platform.isLinux) {
|
} else if (Platform.isLinux) {
|
||||||
return '/';
|
return '/';
|
||||||
} else if (Platform.isAndroid) {
|
} else if (Platform.isAndroid) {
|
||||||
return '/storage/emulated/0';
|
return '/storage/emulated/0/Download';
|
||||||
} else {
|
} else {
|
||||||
throw 'error';
|
throw 'error';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
/// 上下键翻页
|
/// 上下键翻页
|
||||||
|
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import '../Common.dart';
|
import '../Common.dart';
|
||||||
|
@ -27,3 +29,21 @@ Future<void> chooseKeyboardController(BuildContext context) async {
|
||||||
keyboardController = target;
|
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 'package:flutter/material.dart';
|
||||||
|
|
||||||
import '../Common.dart';
|
import '../Common.dart';
|
||||||
|
@ -10,7 +12,8 @@ const propertyName = "volumeController";
|
||||||
late bool volumeController;
|
late bool volumeController;
|
||||||
|
|
||||||
Future<void> initVolumeController() async {
|
Future<void> initVolumeController() async {
|
||||||
volumeController = (await method.loadProperty(propertyName, "false")) == "true";
|
volumeController =
|
||||||
|
(await method.loadProperty(propertyName, "false")) == "true";
|
||||||
}
|
}
|
||||||
|
|
||||||
String volumeControllerName() {
|
String volumeControllerName() {
|
||||||
|
@ -26,3 +29,19 @@ Future<void> chooseVolumeController(BuildContext context) async {
|
||||||
volumeController = target;
|
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';
|
import 'basic/config/Themes.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
runApp(PikachuApp());
|
runApp(PikapiApp());
|
||||||
}
|
}
|
||||||
|
|
||||||
class PikachuApp extends StatefulWidget {
|
class PikapiApp extends StatefulWidget {
|
||||||
const PikachuApp({Key? key}) : super(key: key);
|
const PikapiApp({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() => _PikachuAppState();
|
State<StatefulWidget> createState() => _PikapiAppState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _PikachuAppState extends State<PikachuApp> {
|
class _PikapiAppState extends State<PikapiApp> {
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
themeEvent.subscribe(_onChangeTheme);
|
themeEvent.subscribe(_onChangeTheme);
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
import 'package:flutter/gestures.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:pikapi/basic/Cross.dart';
|
|
||||||
|
|
||||||
class AboutScreen extends StatelessWidget {
|
class AboutScreen extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var theme = Theme.of(context);
|
|
||||||
var size = MediaQuery.of(context).size;
|
var size = MediaQuery.of(context).size;
|
||||||
var min = size.width < size.height ? size.width : size.height;
|
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/material.dart';
|
||||||
import 'package:flutter_search_bar/flutter_search_bar.dart';
|
import 'package:flutter_search_bar/flutter_search_bar.dart';
|
||||||
import 'package:pikapi/basic/Common.dart';
|
import 'package:pikapi/basic/Common.dart';
|
||||||
|
|
|
@ -73,22 +73,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||||
setState(() {});
|
setState(() {});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
ListTile(
|
volumeControllerSetting(),
|
||||||
title: Text("阅读器音量键翻页(仅安卓)"),
|
keyboardControllerSetting(),
|
||||||
subtitle: Text(volumeControllerName()),
|
|
||||||
onTap: () async {
|
|
||||||
await chooseVolumeController(context);
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
),
|
|
||||||
ListTile(
|
|
||||||
title: Text("阅读器键盘翻页(仅PC)"),
|
|
||||||
subtitle: Text(keyboardControllerName()),
|
|
||||||
onTap: () async {
|
|
||||||
await chooseKeyboardController(context);
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Divider(),
|
Divider(),
|
||||||
ListTile(
|
ListTile(
|
||||||
title: Text("封印"),
|
title: Text("封印"),
|
||||||
|
@ -141,14 +127,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||||
title: Text('清除缓存'),
|
title: Text('清除缓存'),
|
||||||
),
|
),
|
||||||
Divider(),
|
Divider(),
|
||||||
ListTile(
|
androidDisplayModeSetting(),
|
||||||
title: Text("屏幕刷新率(安卓)"),
|
|
||||||
subtitle: Text(androidDisplayModeName()),
|
|
||||||
onTap: () async {
|
|
||||||
await chooseAndroidDisplayMode(context);
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Divider(),
|
Divider(),
|
||||||
ListTile(
|
ListTile(
|
||||||
title: Text("文件夹选择器默认路径"),
|
title: Text("文件夹选择器默认路径"),
|
||||||
|
|
|
@ -6,7 +6,6 @@ import 'package:event/event.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:photo_view/photo_view_gallery.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/Common.dart';
|
||||||
import 'package:pikapi/basic/Cross.dart';
|
import 'package:pikapi/basic/Cross.dart';
|
||||||
import 'package:pikapi/basic/Entities.dart';
|
import 'package:pikapi/basic/Entities.dart';
|
||||||
|
|
|
@ -197,8 +197,7 @@ class _RemoteImageState extends State<RemoteImage> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
_mock =
|
_mock = widget.fileServer == "" || widget.fileServer.contains(".xyz/");
|
||||||
widget.fileServer == "" || widget.fileServer.contains(".xyz/");
|
|
||||||
if (!_mock) {
|
if (!_mock) {
|
||||||
_future = method
|
_future = method
|
||||||
.remoteImageData(widget.fileServer, widget.path)
|
.remoteImageData(widget.fileServer, widget.path)
|
||||||
|
@ -261,13 +260,17 @@ Widget buildError(double? width, double? height) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget buildLoading(double? width, double? height) {
|
Widget buildLoading(double? width, double? height) {
|
||||||
|
double? size;
|
||||||
|
if (width != null && height != null) {
|
||||||
|
size = width < height ? width : height;
|
||||||
|
}
|
||||||
return Container(
|
return Container(
|
||||||
width: width,
|
width: width,
|
||||||
height: height,
|
height: height,
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Icon(
|
child: Icon(
|
||||||
Icons.downloading,
|
Icons.downloading,
|
||||||
size: width,
|
size: size,
|
||||||
color: Colors.black12,
|
color: Colors.black12,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -13,7 +13,7 @@ import 'package:pikapi/main.dart';
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||||
// Build our app and trigger a frame.
|
// Build our app and trigger a frame.
|
||||||
await tester.pumpWidget(PikachuApp());
|
await tester.pumpWidget(PikapiApp());
|
||||||
|
|
||||||
// Verify that our counter starts at 0.
|
// Verify that our counter starts at 0.
|
||||||
expect(find.text('0'), findsOneWidget);
|
expect(find.text('0'), findsOneWidget);
|
||||||
|
|
Loading…
Reference in New Issue