如何修改ThemeData.dark()的默认accentColor属性?
当然可行!给ThemeData.dark()自定义accentColor的方法
你完全可以修改ThemeData.dark()的默认accentColor,目前你的代码里只是直接使用了未修改的ThemeData.dark()实例,所以才没看到预期变化。Flutter提供了非常便捷的方式调整预定义主题的属性,最推荐用copyWith方法来实现:
具体修改示例
把你的主题切换代码改成这样即可:
theme: snapshot.data ? ThemeData.dark().copyWith( // 替换成你想要的accentColor值 accentColor: Colors.yellow, // 还能按需修改dark主题的其他属性,比如canvasColor、appBarTheme canvasColor: Colors.grey[900], appBarTheme: AppBarTheme(color: Colors.grey[800]) ) : ThemeData( accentColor: Colors.white, canvasColor: Colors.blue[400], appBarTheme: AppBarTheme(color: Colors.blue[400]) ),
为什么推荐用copyWith?
ThemeData.dark()本身是Flutter预配置好的深色主题实例,copyWith方法会创建这个实例的副本,只替换你明确指定的属性,其他属性依然保留ThemeData.dark()的默认值——这样你既能自定义需要修改的部分,又不用手动重新配置整个深色主题的所有参数,高效又不容易出错。
如果你不想用copyWith,也可以参考ThemeData.dark()的源码默认值手动构建深色主题,但显然copyWith是更简洁的方案。
内容的提问来源于stack exchange,提问作者zeed
相关产品推荐
相关产品推荐

