似乎无法包装时如何共享预配置的小部件

时间:2020-01-31 21:30:18

标签: flutter

我有这个颤动按钮:

RaisedButton(
    elevation: 2,
    color: Colors.lightBlue,
    child: Text('Add'),
    onPressed: () {
      appState.addSet();
    },
)

我有许多按钮设置了相同的属性提升值“ 2”。我不想每次都创建RaisedButton时都定义此值。

然后我想到了用一个新的StatelessWidget和一些参数包装这个RaisedButton的问题。

但是后来我看到每个onPressed都在执行带有动态类型定义的函数:

可以是空方法或具有参数值等...这意味着我如何提供ctor参数

例如覆盖两个类型定义的函数?

或者也许是在扑朔迷离中,我可以以某种方式覆盖样式-不要说字体/颜色-所有RaisedButton类具有相同的高度吗?

1 个答案:

答案 0 :(得分:0)

颤动的妙处在于它的小部件,您可以扩展RaisedButton类并将参数传递给超类(此处为RaisedButton),并在无输入的情况下默认设置值。

示例:

class MyRaisedButton extends RaisedButton {
  const MyRaisedButton({
    Key key,
    @required VoidCallback onPressed,
    Color color,
    double elevation,
    Widget child,
  }) : super(
          onPressed: onPressed,
          elevation: elevation ?? 2,
          color: color ?? Colors.lightBlue,
          child: child ?? const Text('Button'),
        );
}

使用MyRaisedButton代替RaisedButton。如果使用RaisedButton,这将为您提供相同的功能,只是在您不传递args时将使用默认值。

希望有帮助!