有人可以澄清一下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语法中的“ ...”是什么?什么意思?
答案 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);
}),
],
),
),
);
输出:
答案 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"),
],
);
}
希望有帮助