【发布时间】:2019-02-19 01:01:51
【问题描述】:
动态更改 Flutter 应用主题的最佳方式是什么?例如,如果用户将颜色更改为红色,我希望主题立即更改为红色。我在网上找不到任何很有帮助的东西,除了一个人说要使用 BLOC 模式,我不熟悉它。我想听听你们对这个问题的看法。谢谢!
我目前的代码结构:
var themeData = ThemeData(
fontFamily: 'Raleway',
primaryColor: Colors.blue,
brightness: Brightness.light,
backgroundColor: Colors.white,
accentColor: Colors.blue);
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: Constants.appName,
theme: themeData,
home: CheckAuth(), //CheckAuth returns MyHomePage usually
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title, @required this.uid}) : super(key: key);
final String title;
final String uid;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
...build and stuff
}
【问题讨论】:
-
您希望应用的哪些方面包含在主题中?如果您可以添加一小段代码,对其他人也会有很大帮助。
-
只是改变颜色和亮度(暗/亮)。没有太多具体的代码可以提供,基本上只是一个超级基本的应用程序。
-
您基本上需要将此类配置(背景颜色、字体颜色、大小等)转换为变量,并在某些事件上更新它们。很难说根据可用信息你能实现什么以及如何实现,但希望你明白这一点。