@@ -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 \n Current 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 ()}\n Preferred 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 ()}\n Preferred 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 },
0 commit comments