【问题标题】:Flutter how lo listen device dark theme change instantlyFlutter 如何听设备暗色主题瞬间变化
【发布时间】:2021-07-12 19:45:52
【问题描述】:

我的 Flutter 应用程序不会在深色主题功能下听取用户的偏好变化。我需要硬重启我的应用以反映更改。

如何在设备设置中打开/关闭深色主题后立即更改颤振主题?

  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        brightness: Brightness.light
      ),
      darkTheme: ThemeData(
        brightness: Brightness.dark
      ),
      themeMode: ThemeMode.system,
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }

谢谢

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    要查看更改,您需要两件事,使用StatefulWidget 并在每次用户更改主题时调用setState

    IconButton(
      onPressed: () {
        setState(() {
          functionToChangeTheme();
        });
      },
      icon: Icon(Icons.add),
    )
    

    【讨论】:

      【解决方案2】:

      我建议你试试这个插件Adaptive Chameleon Theme。它旨在帮助您轻松切换主题模式,无论是从浅色到深色,还是使用默认的用户定义的设备主题。

      像这样:

      // sets theme mode to dark
      AdaptiveChameleonTheme.of(context).changeThemeMode(dark: true);
        
      // sets theme mode to light
      AdaptiveChameleonTheme.of(context).changeThemeMode(dark: false);
        
      // sets theme mode to system default
      AdaptiveChameleonTheme.of(context).changeThemeMode(dynamic: true);
      

      它还具有额外的好处,允许您根据需要更改主题颜色。

      AdaptiveChameleonTheme.of(context).setTheme(AppThemes.LightRed);
      AdaptiveChameleonTheme.of(context).setTheme(AppThemes.LightBlue);
      

      选择存储在共享首选项中并持久保存在设备内存中。

      完全公开,我是插件的开发者,所以你可以认为这是一个无耻的插件。但是,我过去也面临过类似的挑战,因此我开发了这个快速且易于使用的解决方案。

      【讨论】:

        猜你喜欢
        • 2022-07-19
        • 1970-01-01
        • 2018-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-07
        • 1970-01-01
        相关资源
        最近更新 更多