[英]Flutter GetX Changing Theme needs Hot Reload?
hi guys I'm using the flutter GetX package to change my app ThemeMode.大家好,我正在使用 flutter GetX package 更改我的应用程序 ThemeMode。 it works fine but the problem is it needs a hot reload to change the ThemeMode here is my code它工作正常但问题是它需要热重载来更改 ThemeMode 这是我的代码
changeThemeMode() {darkModeSwitch.value == true? Get.changeTheme(Apptheme.dark): Get.changeTheme(Apptheme.light);}
No, you don't need it.不,你不需要它。
Make ensure which you are using GetMaterialApp
instead of MaterialApp
.确保您使用的是GetMaterialApp
而不是MaterialApp
。 Here's how I got it:这是我得到它的方式:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
I create a changeTheme
method to do it我创建了一个changeTheme
方法来做到这一点
void changeTheme() {
Get.changeTheme(Get.isDarkMode ? ThemeData.light() : ThemeData.dark());
}
And I call him in the page like that:我在页面上这样称呼他:
floatingActionButton: FloatingActionButton(
onPressed: changeTheme,
child: Icon(Icons.add),
),
That's works for me.这对我有用。
@override
void onInit() async {
super.onInit();
isDarkMode = settings.read('isDarkMode') ?? false;
ever(_isDarkMode, (_) => settings.write('isDarkMode', isDarkMode));
ever(
_isDarkMode,
(_) => Get.changeTheme(
_isDarkMode.value ? getDarkTheme() : getLightTheme()));
}
...
ThemeData getDarkTheme() {
return darkTheme;
}
ThemeData getLightTheme() {
return lightTheme;
}
This code is an example of using getStorage to save setting values to a local device and turning on/off dark mode by manipulating a switch.此代码是使用 getStorage 将设置值保存到本地设备并通过操作开关打开/关闭黑暗模式的示例。
ever(
_isDarkMode,
(_) => Get.changeTheme(
_isDarkMode.value ? getDarkTheme() : getLightTheme()));
This may help you
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.