diff --git a/lib/main.dart b/lib/main.dart index 5040edca..dd87ed44 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,7 @@ +import 'dart:io'; + import 'package:flutter/services.dart'; +import 'package:flutter_displaymode/flutter_displaymode.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -61,6 +64,23 @@ class MyApp extends StatelessWidget { double textScale = setting.get(SettingBoxKey.defaultTextScale, defaultValue: 1.0); + // 强制设置高帧率 + if (Platform.isAndroid) { + try { + late List modes; + FlutterDisplayMode.supported.then((value) { + modes = value; + var storageDisplay = setting.get(SettingBoxKey.displayMode); + DisplayMode f = DisplayMode.auto; + if (storageDisplay != null) { + f = modes.firstWhere((e) => e.toString() == storageDisplay); + } + DisplayMode preferred = modes.toList().firstWhere((el) => el == f); + FlutterDisplayMode.setPreferredMode(preferred); + }); + } catch (_) {} + } + return DynamicColorBuilder( builder: ((ColorScheme? lightDynamic, ColorScheme? darkDynamic) { ColorScheme? lightColorScheme; diff --git a/lib/pages/setting/pages/display_mode.dart b/lib/pages/setting/pages/display_mode.dart index 4e84e956..0dcf1958 100644 --- a/lib/pages/setting/pages/display_mode.dart +++ b/lib/pages/setting/pages/display_mode.dart @@ -2,6 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; import 'package:flutter_displaymode/flutter_displaymode.dart'; +import 'package:hive/hive.dart'; +import 'package:pilipala/utils/storage.dart'; class SetDiaplayMode extends StatefulWidget { const SetDiaplayMode({super.key}); @@ -14,6 +16,7 @@ class _SetDiaplayModeState extends State { List modes = []; DisplayMode? active; DisplayMode? preferred; + Box setting = GStrorage.setting; final ValueNotifier page = ValueNotifier(0); late final PageController controller = PageController() @@ -29,24 +32,36 @@ class _SetDiaplayModeState extends State { }); } + // 获取所有的mode Future fetchAll() async { preferred = await FlutterDisplayMode.preferred; active = await FlutterDisplayMode.active; - // GStorage().setDisplayModeType(preferred!); + await setting.put(SettingBoxKey.displayMode, preferred.toString()); setState(() {}); } + // 初始化mode/手动设置 Future init() async { try { modes = await FlutterDisplayMode.supported; } on PlatformException catch (e) { print(e); } - // var res = await GStorage().getDisplayModeType(); - // preferred = modes.toList().firstWhere((el) => el == res); + var res = await getDisplayModeType(modes); + + preferred = modes.toList().firstWhere((el) => el == res); FlutterDisplayMode.setPreferredMode(preferred!); } + Future getDisplayModeType(modes) async { + var value = setting.get(SettingBoxKey.displayMode); + DisplayMode f = DisplayMode.auto; + if (value != null) { + f = modes.firstWhere((e) => e.toString() == value); + } + return f; + } + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 6ecd6083..8a8dbc40 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -129,6 +129,7 @@ class SettingBoxKey { static const String customColor = 'customColor'; // 自定义主题色 static const String iosTransition = 'iosTransition'; // ios路由 static const String enableSingleRow = 'enableSingleRow'; // 首页单列 + static const String displayMode = 'displayMode'; } class LocalCacheKey {