Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-05-01 10:37:31 +08:00
parent 91a14d8286
commit d27f5f315c
71 changed files with 94 additions and 1561 deletions

View File

@@ -1,108 +0,0 @@
import 'package:PiliPlus/utils/extension/iterable_ext.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:PiliPlus/utils/storage_key.dart';
import 'package:flutter/foundation.dart' show kDebugMode;
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show PlatformException;
import 'package:flutter_displaymode/flutter_displaymode.dart';
import 'package:hive_ce/hive.dart';
class SetDisplayMode extends StatefulWidget {
const SetDisplayMode({super.key});
@override
State<SetDisplayMode> createState() => _SetDisplayModeState();
}
class _SetDisplayModeState extends State<SetDisplayMode> {
List<DisplayMode> modes = <DisplayMode>[];
DisplayMode? active;
DisplayMode? preferred;
Box setting = GStorage.setting;
@override
void initState() {
super.initState();
init();
}
// 获取所有的mode
Future<void> fetchAll() async {
preferred = await FlutterDisplayMode.preferred;
active = await FlutterDisplayMode.active;
setting.put(SettingBoxKey.displayMode, preferred.toString());
if (mounted) {
setState(() {});
}
}
// 初始化mode/手动设置
Future<void> init() async {
try {
modes = await FlutterDisplayMode.supported;
} on PlatformException catch (e) {
if (kDebugMode) debugPrint(e.toString());
}
final value = setting.get(SettingBoxKey.displayMode);
if (value != null) {
preferred = modes.firstWhereOrNull((e) => e.toString() == value);
}
preferred ??= DisplayMode.auto;
FlutterDisplayMode.setPreferredMode(preferred!).whenComplete(() {
Future.delayed(const Duration(milliseconds: 100), fetchAll);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
appBar: AppBar(title: const Text('屏幕帧率设置')),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding:
MediaQuery.viewPaddingOf(context).copyWith(top: 0, bottom: 0) +
const EdgeInsets.only(left: 25, top: 10, bottom: 5),
child: Text(
'没有生效重启app试试',
style: TextStyle(color: Theme.of(context).colorScheme.outline),
),
),
Expanded(
child: RadioGroup(
onChanged: (DisplayMode? newMode) {
FlutterDisplayMode.setPreferredMode(
newMode!,
).whenComplete(
() => Future.delayed(
const Duration(milliseconds: 100),
fetchAll,
),
);
},
groupValue: preferred,
child: ListView.builder(
itemCount: modes.length,
itemBuilder: (context, index) {
final DisplayMode mode = modes[index];
return RadioListTile<DisplayMode>(
value: mode,
title: mode == DisplayMode.auto
? const Text('自动')
: Text('$mode${mode == active ? ' [系统]' : ''}'),
);
},
),
),
),
],
),
);
}
}

View File

@@ -13,7 +13,7 @@ import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:catcher_2/model/platform_type.dart';
import 'package:catcher_2/model/report.dart' as catcher;
import 'package:flutter/foundation.dart';
import 'package:flutter/foundation.dart' show kDebugMode;
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';