如何在Dart列表中复制重复的项目?

4

我的意图是将一个类的5个实例放入列表中。

final List<Ball> _ballList =[Ball(),Ball(),Ball(),Ball(),Ball(),]

我希望得到类似的东西,而不是那个。

final List<Ball> _ballList =[Ball() * 5]
2个回答

8

使用generate()应该会有所帮助。
例如,

class Ball{
  String color;
}

void main() {
  List<Ball> ballList = new List<Ball>.generate(5,(i)=>Ball());
  for(int i=0;i<ballList.length;i++) {
    print(ballList[i]);
  }
}

5

使用Dart 2.3或更高版本,您可以使用集合操作符for

final List<Ball> _ballList = [
  for (var i = 0; i < 5; i += 1) Ball(),
];

请注意,上述代码将生成一个包含 5 个不同 Ball 实例的List,我假设这是您想要的。在支持类似于您的[Ball() * 5]示例的语言(例如 Python)中,您将获得包含相同实例的 5 个元素的列表。如果您想要相同的实例,则可以使用List.filled构造函数
final List<Ball> _ballList = List<Ball>.filled(5, Ball());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接