Skip to content

Commit d4581b4

Browse files
Try to fix refreshRate
1 parent 892237c commit d4581b4

File tree

2 files changed

+39
-23
lines changed

2 files changed

+39
-23
lines changed

lib/Screens/Setting/experiment_setting_screen.dart

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ class _ExperimentSettingScreenState extends State<ExperimentSettingScreen>
4343
bool _biometricAvailable = false;
4444
int _refreshRate = HiveUtil.getInt(HiveUtil.refreshRateKey);
4545
List<DisplayMode> _modes = [];
46+
DisplayMode? _activeMode;
47+
DisplayMode? _preferredMode;
4648

4749
List<Tuple2<String, DisplayMode>> get _supportedModeTuples =>
4850
_modes.map((e) => Tuple2(e.toString(), e)).toList();
@@ -51,11 +53,15 @@ class _ExperimentSettingScreenState extends State<ExperimentSettingScreen>
5153
void initState() {
5254
super.initState();
5355
initBiometricAuthentication();
54-
getRefreshRate();
56+
if (ResponsiveUtil.isAndroid()) getRefreshRate();
5557
}
5658

5759
getRefreshRate() async {
5860
_modes = await FlutterDisplayMode.supported;
61+
_activeMode = await FlutterDisplayMode.active;
62+
_preferredMode = await FlutterDisplayMode.preferred;
63+
ILogger.info(
64+
"Current active display mode: $_activeMode\nCurrent preferred display mode: $_preferredMode");
5965
setState(() {});
6066
}
6167

@@ -78,36 +84,48 @@ class _ExperimentSettingScreenState extends State<ExperimentSettingScreen>
7884
if (ResponsiveUtil.isAndroid()) const SizedBox(height: 10),
7985
if (ResponsiveUtil.isAndroid())
8086
ItemBuilder.buildEntryItem(
81-
tip: _modes.isNotEmpty
82-
? _modes[_refreshRate.clamp(0, _modes.length - 1)]
83-
.toString()
84-
: "",
87+
// tip: _modes.isNotEmpty
88+
// ? _modes[_refreshRate.clamp(0, _modes.length - 1)]
89+
// .toString()
90+
// : "",
8591
context: context,
8692
title: "刷新率",
8793
description:
88-
"意在解决部分机型高刷失效的问题,如果没有问题,请不要修改;如果您的设备支持LTPO,可能会设置失败",
94+
"意在解决部分机型高刷失效的问题,如无问题,请不要修改\n如果您的设备支持LTPO,可能会设置失败\n已选模式: ${_modes.isNotEmpty ? _modes[_refreshRate.clamp(0, _modes.length - 1)].toString() : ""}\n首选模式: ${_preferredMode?.toString() ?? "Unknown"}\n活动模式: ${_activeMode?.toString() ?? "Unknown"}",
8995
topRadius: true,
9096
bottomRadius: true,
9197
onTap: () {
98+
getRefreshRate();
9299
BottomSheetBuilder.showListBottomSheet(
93100
context,
94101
(context) => TileList.fromOptions(
95102
_supportedModeTuples,
96103
(item2) async {
97104
try {
105+
ILogger.info(
106+
"Try to set display mode: ${item2.toString()}");
107+
ILogger.info(
108+
"Active display mode before set: ${_activeMode.toString()}\nPreferred display mode before set: ${_preferredMode.toString()}");
98109
await FlutterDisplayMode.setPreferredMode(item2);
99-
var active = await FlutterDisplayMode.active;
100-
if (active.refreshRate != item2.refreshRate) {
110+
_activeMode = await FlutterDisplayMode.active;
111+
_preferredMode = await FlutterDisplayMode.preferred;
112+
ILogger.info(
113+
"Active display mode after set: ${_activeMode.toString()}\nPreferred display mode after set: ${_preferredMode.toString()}");
114+
if (_preferredMode?.toString() != item2.toString()) {
101115
IToast.showTop("刷新率设置失败");
102116
} else {
103-
IToast.showTop("刷新率设置成功");
117+
if (_activeMode?.toString() != item2.toString()) {
118+
IToast.showTop("刷新率设置成功,但当前显示模式未改变");
119+
} else {
120+
IToast.showTop("刷新率设置成功");
121+
}
104122
}
105123
} catch (e, t) {
106124
IToast.showTop("刷新率设置失败: ${e.toString()}");
107-
ILogger.error("Failed to set refresh rate", e, t);
125+
ILogger.error("Failed to set display mode", e, t);
108126
}
109127
_refreshRate = _modes.indexOf(item2);
110-
setState(() {});
128+
getRefreshRate();
111129
HiveUtil.put(HiveUtil.refreshRateKey, _refreshRate);
112130
Navigator.pop(context);
113131
},

lib/main.dart

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,13 @@ Future<void> main(List<String> args) async {
3939

4040
Future<void> runMyApp(List<String> args) async {
4141
await initApp();
42-
if (ResponsiveUtil.isMobile()) {
42+
if (ResponsiveUtil.isAndroid()) {
4343
await initDisplayMode();
44-
if (ResponsiveUtil.isAndroid()) {
45-
await RequestHeaderUtil.initAndroidInfo();
46-
SystemUiOverlayStyle systemUiOverlayStyle = const SystemUiOverlayStyle(
47-
statusBarColor: Colors.transparent,
48-
statusBarIconBrightness: Brightness.dark);
49-
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
50-
}
44+
await RequestHeaderUtil.initAndroidInfo();
45+
SystemUiOverlayStyle systemUiOverlayStyle = const SystemUiOverlayStyle(
46+
statusBarColor: Colors.transparent,
47+
statusBarIconBrightness: Brightness.dark);
48+
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
5149
}
5250
if (ResponsiveUtil.isDesktop()) {
5351
await initWindow();
@@ -109,8 +107,8 @@ Future<void> initDisplayMode() async {
109107
try {
110108
var modes = await FlutterDisplayMode.supported;
111109
ILogger.info("Supported display modes: $modes");
112-
ILogger.info("Current active display mode: ${await FlutterDisplayMode.active}");
113-
ILogger.info("Current preferred display mode: ${await FlutterDisplayMode.preferred}");
110+
ILogger.info(
111+
"Current active display mode: ${await FlutterDisplayMode.active}\nCurrent preferred display mode: ${await FlutterDisplayMode.preferred}");
114112
int refreshRate =
115113
HiveUtil.getInt(HiveUtil.refreshRateKey, defaultValue: -1);
116114
if (refreshRate == -1) {
@@ -121,8 +119,8 @@ Future<void> initDisplayMode() async {
121119
await FlutterDisplayMode.setPreferredMode(configMode);
122120
ILogger.info("Config display mode: ${configMode.toString()}");
123121
}
124-
ILogger.info("Current active display mode after config: ${await FlutterDisplayMode.active}");
125-
ILogger.info("Current preferred display mode after config: ${await FlutterDisplayMode.preferred}");
122+
ILogger.info(
123+
"Current active display mode after config: ${await FlutterDisplayMode.active}\nCurrent preferred display mode after config: ${await FlutterDisplayMode.preferred}");
126124
} catch (e, t) {
127125
ILogger.error("Failed to init display mode", e, t);
128126
}

0 commit comments

Comments
 (0)