在Flutter中的主题数据中添加自定义颜色的位置
我是个初学者,最近才开始学习颤振 在网上搜索了很长时间后,我终于找到了一个教程,解释了如何添加动态主题转换器 现在这一切都很完美——但是我仍然不知道该在哪里添加自定义颜色,比如在Flutter中的主题数据中添加自定义颜色的位置,flutter,dart,Flutter,Dart,我是个初学者,最近才开始学习颤振 在网上搜索了很长时间后,我终于找到了一个教程,解释了如何添加动态主题转换器 现在这一切都很完美——但是我仍然不知道该在哪里添加自定义颜色,比如 primaryColor: Colors.white, accentColor: Colors.green, 在主题数据中 我将在下面发布我的代码,请帮助我 main.dart void main() => runApp(MyApp()); class MyApp extends StatelessWidget
primaryColor: Colors.white, accentColor: Colors.green,
在主题数据中
我将在下面发布我的代码,请帮助我
main.dart
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<ThemeChanger>(
create: (_) => ThemeChanger(ThemeData.light()),
child: MaterialAppWithTheme(),
);
}
}
class MaterialAppWithTheme extends StatelessWidget {
@override
Widget build(BuildContext context) {
final theme = Provider.of<ThemeChanger>(context);
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: theme.getTheme(),
home: MdLayout(),
);
}
}
theme.dart
class ThemeChanger with ChangeNotifier{
ThemeData _themeData;
ThemeChanger(this._themeData);
getTheme() => _themeData;
setTheme(ThemeData theme) {
_themeData = theme;
notifyListeners();
}
}
theme_switch_state.dart
class ThemeSwitchState extends State {
bool switchControl = false;
@override
Widget build(BuildContext context) {
return Column(mainAxisAlignment: MainAxisAlignment.center, children: [
Transform.scale(
scale: 1.5,
child: Switch(
onChanged: toggleSwitch,
value: switchControl,
activeColor: Colors.blue,
activeTrackColor: Colors.grey,
inactiveThumbColor: Colors.green,
inactiveTrackColor: Colors.white,
)),
]);
}
void toggleSwitch(bool value) {
ThemeChanger _themeChanger = Provider.of<ThemeChanger>(context, listen: false);
if (switchControl == false) {
setState(() {
switchControl = true;
});
print('Theme is Dark');
// Put your code here which you want to execute on Switch ON event.
_themeChanger.setTheme(ThemeData.dark());
} else {
setState(() {
switchControl = false;
});
print('Theme is Light');
// Put your code here which you want to execute on Switch OFF event.
_themeChanger.setTheme(ThemeData.light());
}
}
}
main.dart
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回ChangeNotifierProvider(
创建:()=>themechance(ThemeData.light()),
子项:MaterialAppWithTheme(),
);
}
}
类MaterialAppWithTheme扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
最终主题=提供者(上下文);
返回材料PP(
debugShowCheckedModeBanner:false,
theme:theme.getTheme(),
主页:MdLayout(),
);
}
}
主题飞镖
使用ChangeNotifier对Mechance进行分类{
主题数据;
Themechance(本主题数据);
getTheme()=>\u主题数据;
setTheme(主题数据主题){
_主题数据=主题;
notifyListeners();
}
}
主题\u开关\u状态.dart
类ThemeSwitchState扩展状态{
布尔开关控制=假;
@凌驾
小部件构建(构建上下文){
返回列(mainAxisAlignment:mainAxisAlignment.center,子项:[
变换比例(
比例:1.5,
孩子:开关(
一旦更改:切换开关,
值:开关控制,
activeColor:Colors.blue,
activeTrackColor:Colors.grey,
颜色:Colors.green,
颜色:颜色。白色,
)),
]);
}
无效切换开关(布尔值){
ThemeChanger _ThemeChanger=Provider.of(上下文,侦听:false);
if(switchControl==false){
设置状态(){
开关控制=真;
});
印刷品(“主题为黑色”);
//将您要在Switch on事件中执行的代码放在这里。
_setTheme(ThemeData.dark());
}否则{
设置状态(){
开关控制=假;
});
印刷(“主题是光”);
//将您要在关闭事件时执行的代码放在此处。
_themeChanger.setTheme(主题data.light());
}
}
}
如果您构造普通的主题数据类,那么有太多的属性可以将值放入其中。例如,ThemeData(primaryColor:Colors.red)
,但如果使用指定的构造函数,如ThemeData.light()
,flift会为标准灯光主题放置所有默认值,而ThemeData.dark()
也是如此。因此,您可以使用copyWith()
方法以某种方式覆盖默认值,ThemeData.light().copyWith(primaryColor:Colors.white,accentColor:Colors.green,)
如果您构建普通的ThemeData类,那么可以将值放入的属性太多了。例如,ThemeData(primaryColor:Colors.red)
,但如果使用指定的构造函数,如ThemeData.light()
,flift会为标准灯光主题放置所有默认值,而ThemeData.dark()
也是如此。因此,您可以使用copyWith()
方法以某种方式覆盖默认值,ThemeData.light().copyWith(primaryColor:Colors.white,accentColor:Colors.green,)