Flutter 按钮主题

Flutter Button Theme

我正在使用 Theme 为 flutter 应用设计样式。 关于Button,ButttonThemeData.buttonColorButtonThemeData.colorScheme.primary有什么区别?

在创建ThemeData对象时,如果没有指定buttonTheme,则会从buttonColor等其他属性构建。如果未指定 buttonColor,它将是 primarySwatch 的阴影。如果未指定 primarySwatch,则为 Colors.blue

同理,如果不指定colorScheme,则会从primarySwatch等其他属性构建,此时colorScheme.primary获取primarySwatch的值,默认为 Colors.blue

至于框架如何将它们用于小部件:

  • buttonColor实际上没有在任何地方使用。
  • buttonTheme.buttonColor 用于 RaisedButtonFlatButtonOutlineButton
  • colorScheme.primary 用于滑块、切换开关、快餐栏以及几个 Cupertino 小部件。

ThemeData 的其他几个属性本应通过引入 colorScheme 对象而变得多余,但它们并未被弃用,因此非常混乱。