- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想制作一个可以更改我的应用程序主题的按钮,该按钮将位于设置页面中。不幸的是,我还没有找到解决方案,我在互联网上只能找到动态切换主题的方法。
最佳答案
上面的答案是正确的。下面是一些代码,可帮助您直观地了解解决方案。
void main() async {
WidgetsFlutterBinding.ensureInitialized();
runApp(
MultiProvider(
providers: [
// Used MultiProvider incase you have other providers
ChangeNotifierProvider<ThemeDataProvider>(
create: (_) => ThemeDataProvider(),
),
],
child: MyApp(),
),
);
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
ThemeDataProvider themeDataProvider = Provider.of(context);
// Pull the theme data from the provider and make a few modification
// The modifications are for illustration only. Not required.
final ThemeData currentTheme = themeDataProvider.themeData.copyWith(
scaffoldBackgroundColor: themeDataProvider.isDarkTheme ? Colors.yellow[700] : Colors.yellow[300],
appBarTheme: themeDataProvider.themeData.appBarTheme,
cardTheme: themeDataProvider.themeData.cardTheme,
);
return MaterialApp(
color: Colors.yellow[100],
title: 'MyApp',
theme: currentTheme, //set your theme
initialRoute: setupRoute,
onGenerateRoute: Router.generateRoute,
);
}
}
class ThemeDataProvider with ChangeNotifier {
bool _useDarkTheme;
SharedPreferences _prefs;
ThemeDataProvider() {
_useDarkTheme = false;
_loadPrefs();
}
ThemeData get themeData => _useDarkTheme ? myThemeDark : myThemeLight; //MyTheme... is defined by you
bool get isDarkTheme => _useDarkTheme;
void toggleTheme() {
_useDarkTheme = !_useDarkTheme;
_savePrefs();
notifyListeners();
}
//The reset is just incase you want to save the selected theme for the next time your app is run.
_initPrefs() async {
if (_prefs == null) {
_prefs = await SharedPreferences.getInstance();
}
}
_loadPrefs() async {
await _initPrefs();
_useDarkTheme = _prefs.getBool("useDarkMode") ?? true;
notifyListeners();
}
_savePrefs() async {
await _initPrefs();
await _prefs.setBool("useDarkMode", _useDarkTheme);
}
}
使用几次后,它真的很简单。
祝你好运!
关于flutter - 如何在 Flutter 中切换到暗/亮模式按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62231889/
我想要一个深色的 Activity 对话框主题,所以我定义如下: @color/colorPrimary @color/colorPrimaryDark @color/col
是否可以改变 UIVisualEffectView 的颜色超出标准的额外亮、亮和暗? 我需要实现明暗预设之间的阴影。 最佳答案 如果您想要类似于 UIVisualEffectView 但控制更多的东西
在这个 fiddle 上,函数完美地完成了工作,但我需要稍微调整连接。 该点击甚至需要是父 div 的 addClass(深色/浅色)(true 或 false)。 如果是深色,则添加 Bright
以前拖动到 Xcode Assets 目录中的图像可以命名如下 ... Rabbit@2x.png Rabbit@3x.png 释放拖动后,这些图像会自动分配到目录中正确的 2x 和 3x 位置。 现
如何获得 Emacs 的背景类型?例如'light或 'dark 你可以像这样定义一张脸: (defface moedict-type '((((class color) (background
我们有几个使用 mongoose 的 nodejs 守护进程,同时共享相同的持久层(包含查询的共享模块)。 在其中一个守护进程(总是同一个)中,我们随机(每周几次)从 mongoose 得到以下错误:
我是一名优秀的程序员,十分优秀!