【发布时间】:2019-09-06 22:47:54
【问题描述】:
在这个应用程序中有三个不同的主题 - 红色、黑色和白色。从主屏幕,用户可以导航到主题屏幕,在那里他们可以选择特定的主题。我想使用一种方法,该方法将使用返回 ThemeData 的类中的函数或构造函数,并将其发送到 MaterialApp 中的 theme: main.dart。
这是一种有效的方法吗?如果是,那么我能否获得有关如何在MaterialApp 上正确设置主题的指南。
如果没有,我能否就如何在此应用中设置三个主题提出一些建议。
这是我试图作为构造函数传递并设置特定背景主题颜色的类:
class ThemeChooser extends StatelessWidget {
static int color;
ThemeData data = ThemeData(scaffoldBackgroundColor: Color(color));
ThemeChooser({color});
@override
Widget build(BuildContext context) {
return ThemeChooser(color: color,);
}
}
这是选择主题的按钮(这只是一个按钮,但假设还有两个用于设置黑白主题):
FlatButton(
onPressed: ()async {
final result = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ThemeScreen(),
));
setState(() {
setThemeRed(redcolor);
});
},
child: Padding(
padding: const EdgeInsets.only(top: 40, left: 8),
child: whitefontstyle(text: "Red", size: 50,),
)
),
这是使用ThemeChooser 的构造函数来设置主题的方法(我只将设置声明为红色主题atm。):
int color;
setThemeRed(int color){
return ThemeChooser(color: redcolor,);
}
这是主要方法:
void main(){
runApp(MaterialApp(
// the theme below also needs to take the value in ThemeChooser set in ThemeScreen.
// theme:
home: TodoList(),
));
}
【问题讨论】: