如何在Dart中传播列表

TSR*_*TSR 14 dart flutter

在Javascript中,我将使用传播运算符:

在此处输入图片说明

现在我对Flutter遇到了同样的问题:

 Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        MyHeader(),
        _buildListOfWidgetForBody(), // <- how to spread this <Widget>[] ????
        MyCustomFooter(),
      ],
    );
  }
Run Code Online (Sandbox Code Playgroud)

ikb*_*ben 22

您现在可以从Dart 2.3开始传播

var a = [0,1,2,3,4];
var b = [6,7,8,9];
var c = [...a,5,...b];

print(c);  // prints: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)


Jor*_*ies 12

将此添加到未来版本的 dart https://github.com/dart-lang/language/issues/47 时存在问题

但现在你可以使用sync*yield*

Iterable<Widget> _buildChildren sync* {
  yield MyHeader();
  yield* _buildListOfWidgetForBody();
  yield MyCustomFooter();
}
Run Code Online (Sandbox Code Playgroud)

编辑:从 Dart 2.3 开始,您现在可以执行以下操作:

Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        MyHeader(),
        ..._buildListOfWidgetForBody(),
        MyCustomFooter(),
      ],
    );
  }
Run Code Online (Sandbox Code Playgroud)


Mig*_*ivo 7

更新 - 2019 年 4 月 20 日

Dart 2.3发布以来,您现在可以使用扩展运算符。

List<int> a = [0,1,2,3,4];
List<int> b = [6,7,8,9];
List<int> c = [...a,5,...b];
Run Code Online (Sandbox Code Playgroud)