飞镖列表中三个点(...)的用途是什么?

时间:2019-09-12 06:29:42

标签: flutter dart

我的代码是这样写的,但是它给出了一个错误:

  

错误:无法将“列表”类型的值分配给“小部件”类型的变量。

Column(
  children: [
    Question(
      questions[_questionIndex]['questionText'],
    ),
    ...(questions[_questionIndex]['answers'] as List<String>)
        .map((answer) {
      return Answer(_answerQuestion, answer);
    }).toList()
  ],
)

3 个答案:

答案 0 :(得分:1)

Dart 2.3引入了Spread运算符(…)

参考链接:https://medium.com/flutter-community/whats-new-in-dart-2-3-1a7050e2408d

    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]

答案 1 :(得分:1)

Dart 2.3 带有 spread operator (...)null-aware spread operator (...?),允许我们在集合中添加多个元素。

  List<String> values1 = ['one', 'two', 'three'];
  List<String> values2 = ['four', 'five', 'six'];
  var output = [...values1,...values2];
  print(output); // [one, two, three, four, five, six]

对于 Flutter,我们可以在列内使用这个

   Column(
          children: [
            ...values.map((value) {
              return Text(value);
            }),
          ],
        ),

输出:

enter image description here

答案 2 :(得分:0)

我已经解决了问题。我的flutter SDK尚未升级。运行flutter doctor命令并整理丢失的更新。而且语法现在似乎可以正常工作。