简体   繁体   English

Flutter GetX 换主题需要Hot Reload?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM