在 Flutter 中,如何一次设置 *all* 脚手架背景颜色?
Posted
技术标签:
【中文标题】在 Flutter 中,如何一次设置 *all* 脚手架背景颜色?【英文标题】:In Flutter, how do you set *all* the scaffold background color at once? 【发布时间】:2021-03-22 18:04:36 【问题描述】:目前,我使用以下方法设置每个屏幕的背景颜色:
@override
Widget build(BuildContext context) => Scaffold(
backgroundColor: Colors.white,
body: ...
);
每次创建新屏幕时,我总是忘记添加此背景颜色设置器。这是一个小小的不便,但如果有一种方法可以为所有屏幕设置一次此背景颜色,我真的很感激,除非被特定Scaffold
的backgroundColor
属性覆盖。我尝试在MaterialApp
的color
属性上设置颜色,但看起来没有任何效果。
【问题讨论】:
【参考方案1】:您应该将覆盖背景颜色参数的自定义 ThemeData 传递给您的 MaterialApp,这样就可以解决问题:
return MaterialApp(
// your other app initialization code
theme: ThemeData(scaffoldBackgroundColor: Colors.white),
);
您可以在官方文档中阅读更多关于 ThemData 和 Flutter 应用主题的信息 https://flutter.dev/docs/cookbook/design/themes
【讨论】:
嗯,backgroundColor,还是scaffoldBackgroundColor?还是不管哪一个? 是的,我的错,应该是scaffoldBackgroundColor。 backgroundColor 负责诸如进度条的剩余部分之类的东西(因此仅在某些颤振小部件中使用它) @ChenLiYong 为什么不直接阅读Scaffold.backgroundColor官方文档? @pskink 因为对我有用的是scaffoldBackgroundColor
,而不是Scaffold.backgroundColor
。
@ChenLiYong 这在docs 中有描述:"backgroundColor 属性 Color backgroundColor final 位于整个 Scaffold 之下的 Material 小部件的颜色。默认情况下,主题的 ThemeData.scaffoldBackgroundColor。" 以上是关于在 Flutter 中,如何一次设置 *all* 脚手架背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章
从 Flutter PopupMenuButton 中删除填充