Я использую провайдера для изменения темы в моем приложении. Мое приложение инициализируется сначала темной темой.
class ThemeNotifier extends ChangeNotifier {
final String key = "them";
SharedPreferences _prefs;
bool _darkTheme;
bool get darkTheme => _darkTheme;
ThemeNotifier() {
_darkTheme = true;
_loadFromPrefs();
}
toggleTheme() {
_darkTheme = !_darkTheme;
_saveToPrefs();
notifyListeners();
}
_loadFromPrefs() async {
await _initPrefs();
_darkTheme = _prefs.getBool(key) ?? true;
notifyListeners();
}
_saveToPrefs() async {
await _initPrefs();
_prefs.setBool(key, _darkTheme);
}
_initPrefs() async {
if (_prefs == null) _prefs = await SharedPreferences.getInstance();
}
}
Когда я изменил их на светлый, я вызываю toggleTheme
метод и меняю _darkTheme на false.
Я использую приведенные выше коды, например:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider.value(
value: ThemeNotifier(),
child: Consumer<ThemeNotifier>(
builder: (context, notifire, child) {
child:
return MaterialApp(
title: "theme",
theme: notifire.darkTheme ? dark : light,
home: HomeScreen(),
);
},
),
);
}
}
но когда я меняю приложение на светлую тему и выполняю горячую перезагрузку приложения на секунду, моя тема приложения становится темной, а затем переключается в светлый режим.
Как я могу загрузить приложение без темноты режим, когда я использую светлый режим, то есть, когда я переключаю их в светлый режим, я не хочу показывать темный режим даже в течение нескольких миллисекунд?