Flutter 如何听设备暗色主题瞬间变化
Posted
技术标签:
【中文标题】Flutter 如何听设备暗色主题瞬间变化【英文标题】:Flutter how lo listen device dark theme change instantly 【发布时间】: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'),
);
谢谢
【问题讨论】:
【参考方案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);
选择存储在共享首选项中并持久保存在设备内存中。
完全公开,我是插件的开发者,所以你可以认为这是一个无耻的插件。但是,我过去也面临过类似的挑战,因此我开发了这个快速且易于使用的解决方案。
【讨论】:
以上是关于Flutter 如何听设备暗色主题瞬间变化的主要内容,如果未能解决你的问题,请参考以下文章