dart 无法将参数类型“MaterialColor”赋给参数类型“MaterialStateProperty< Color>

bfrts1fy  于 2023-01-10  发布在  其他
关注(0)|答案(4)|浏览(347)

我有一个与新的ElevatedButtonThemeData小部件相关的问题,基本上我想为我的应用中的所有ElevatedButtons设置背景色,我很难尝试在ThemeData定义中设置它,方法是:

theme: ThemeData(
        ...
        elevatedButtonTheme: ElevatedButtonThemeData(
            style: ButtonStyle(backgroundColor: Colors.red)), // Here Im having the error
        ...
        ),
      ),

错误:

The argument type 'MaterialColor' can't be assigned to the parameter type 'MaterialStateProperty<Color?>?'.dartargument_type_not_assignable)
5m1hhzi4

5m1hhzi41#

MaterialStateProperty.all<Color>(Colors.red)

这将返回MaterialStateProperty<Color?>数据类型。

o7jaxewo

o7jaxewo2#

不要使用ButtonStyle(),尝试:

style: ElevatedButton.styleFrom(backgroundColor: Colors.red)
lc8prwob

lc8prwob3#

在阅读了文档后,我找到了设置颜色的方法。

theme: ThemeData(
    ...
    elevatedButtonTheme: ElevatedButtonThemeData(
        style: ButtonStyle(backgroundColor: MaterialStateProperty.all<Color>(Colors.red))), // Here Im having the error
    ...
    ),
  ),
yxyvkwin

yxyvkwin4#

下面的代码片段显示了我如何使用材质状态属性来设置文本按钮的样式。
您可以看到如何将different types个值相加:

TextButton(style: ButtonStyle(
      padding: MaterialStateProperty.all(const EdgeInsets.all(0)),
      elevation: MaterialStateProperty.all(8),
      shape: MaterialStateProperty.all(
          RoundedRectangleBorder(borderRadius: BorderRadius.circular(50))),
      backgroundColor: MaterialStateProperty.all(Colors.blue),
      shadowColor: MaterialStateProperty.all(
          Theme.of(context).colorScheme.onSurface),
    ),),

我希望这能给你一个想法。

相关问题