在 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: ...
  );

每次创建新屏幕时,我总是忘记添加此背景颜色设置器。这是一个小小的不便,但如果有一种方法可以为所有屏幕设置一次此背景颜色,我真的很感激,除非被特定ScaffoldbackgroundColor 属性覆盖。我尝试在MaterialAppcolor 属性上设置颜色,但看起来没有任何效果。

【问题讨论】:

【参考方案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 中删除填充

如何在 Flutter 中弹出时清除页面

Flutter 如何新增圆角与边框

Flutter:setState 在第一次尝试时工作,但在响应 = 等待后没有工作

Flutter - 如何在列表视图中居中小部件

Flutter - 我的动画只播放一次