Dart:构造函数的扩展运算符

Gir*_*ldi 8 constructor properties dart spread-syntax flutter

在我的flutter应用程序中,我有如下小部件:

Container(
  decoration: BoxDecoration(
    border: Border.all(
      color: Colors.red,
      width: 2,
      style: BorderStyle.solid,
    ),
  ),
  child: Text('Container 1'),
)
Run Code Online (Sandbox Code Playgroud)
Container(
  decoration: BoxDecoration(
    border: Border(
      top: BorderSide(
        color: Colors.red,
        width: 2,
        style: BorderStyle.solid,
      ),
    ),
  ),
  child: Text('Container 2'),
)
Run Code Online (Sandbox Code Playgroud)

两者的边框使用相同的属性。所以我想知道是否有一种类似扩展运算符方法可以为两个小部件插入相同的属性?也许像:

const borderBase = (
  color: Colors.red,
  width: 2,
  style: BorderStyle.solid,
)

Container(
  decoration: BoxDecoration(
    border: Border.all(
      ...borderBase,
    ),
  ),
  child: Text('Container 1'),
)

Container(
  decoration: BoxDecoration(
    border: Border(
      top: BorderSide(
        ...borderBase,
      ),
    ),
  ),
  child: Text('Container 2'),
)
Run Code Online (Sandbox Code Playgroud)

Rém*_*let 6

哪有这回事。

扩展运算符正在开发中,但它仅适用于列表,不适用于类 ( https://github.com/dart-lang/language/issues/47 )

  • 我知道了。所以没有办法动态重用相同的属性吗?这意味着我必须每次都重复它们? (2认同)

Dan*_*l P 3

你可以这样做:

const BorderSide borderBase = BorderSide(
  color: Colors.red,
  width: 2,
  style: BorderStyle.solid,
);

Container(
  decoration: BoxDecoration(
    border: Border.all(
      color: borderBase.color,
      width: borderBase.width,
      style: borderBase.style,
    ),
  ),
  child: Text('Container 1'),
)

Container(
  decoration: BoxDecoration(
    border: Border(
      top: borderBase,
    ),
  ),
  child: Text('Container 2'),
)
Run Code Online (Sandbox Code Playgroud)

不是最好的,但仍然有一些重用。