flutter语法中三点的含义

时间:2019-07-25 04:42:14

标签: flutter syntax

有人可以澄清一下Flutter中“ ...”的含义和用法吗?

我想学习Flutter语法中使用的“三点”。经过一番阅读后,我发现我要找的词是“传播”。

Widget _build() {
  List<Widget> children = [
    Text("first child"),
    Text("second child"),
    Text("third child"),
  ];

  return Column(
    children: <Widget>[
      ...children,
      Text("fourth child"),
    ],
  );
}

如果我在...之前没有children,,则会出现错误The element type 'List<Widget>' can't be assigned to the list type 'Widget'.

我只是认为有人应该发布一个问题。 flutter语法中的“ ...”是什么?什么意思?

3 个答案:

答案 0 :(得分:3)

Dart 2.3引入了散布运算符(...)和空感知的散布运算符(...?),它们提供了将多个元素插入到集合中的简洁方法。

例如,您可以使用传播运算符(...)将列表的所有元素插入另一个列表:

var list = [1, 2, 3];
var list2 = [0, ...list];
assert(list2.length == 4);

如果扩展运算符右边的表达式可能为空,则可以使用可识别空值的扩展运算符(...?)避免出现异常:

var list;
var list2 = [0, ...?list];
assert(list2.length == 1);

有关使用传播运算符的更多详细信息和示例,请参见spread operator proposal

答案 1 :(得分:0)

spread operator (...) 用于提供一种为集合赋值的方法,更常见的是它在列中找到以呈现其子项。

List<String> values = ['one', 'two', 'three'];
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            ...values.map((value) {
              return Text(value);
            }),
          ],
        ),
      ),
    );

输出:

enter image description here

答案 2 :(得分:-1)

我曾经有这个问题。我通过添加.toList();解决了这个问题。到列表小部件。

Widget _build() {
List<Widget> children = [
Text("first child"),
Text("second child"),
Text("third child"),
].toList();

return Column(
children: <Widget>[
  ...children,
  Text("fourth child"),
],
);
}

希望有帮助