flutter 参数类型“EdgeInsets”无法分配给参数类型“MaterialStateProperty〈EdgeInsetsGeometry?>?”

bn31dyow  于 2023-03-13  发布在  Flutter
关注(0)|答案(2)|浏览(291)

我试图添加一些填充到我的小部件,但我遇到了这个问题:

TextButton(
  style: ButtonStyle(
    padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 60.0),
  ),
  onPressed: () {}, child: const Text('Text'),
),

cvxl0en2

cvxl0en21#

使用MaterialStateProperty可以传递一个值,该值取决于材质小部件(通常是MaterialState)的状态。
例如,当按钮被按下时需要改变其颜色或大小时,这可以证明是有用的。
在您的情况下,使用MaterialStateProperty.all如下应该修复它。

TextButton(
  style: ButtonStyle(
    padding: MaterialStateProperty.all(
      EdgeInsets.symmetric(vertical: 20.0, horizontal: 60.0),
    ),
  ),
  onPressed: () {}, child: const Text('Text'),
),

这款similar question同样值得一提。
编辑:来自Flutter通道的relevant video

piwo6bdm

piwo6bdm2#

您可以创建最终的ButtonStyle并在按钮中使用,如:

final ButtonStyle raisedButtonStyle = ElevatedButton.styleFrom(
    padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 60.0),
);

return Body(
  child: Column(
    children: <Widget>[ 
      TextButton(
        style: raisedButtonStyle, 
        onPressed: (){},
        child: const Text("TEXT"),
      )
    ],
),);

https://docs.flutter.dev/release/breaking-changes/buttons

相关问题