我在dart中有一个列表,我想用n个相同的元素来初始化这个列表.

推荐答案

我能想到的最简单的方法是:List.filled(int length, E fill, { bool growable: false }).

参数是:

  • 长度-列表中的元素数
  • E Fill-列表中应包含哪些元素
  • 可生长——如果你想拥有动态长度;

所以你可以:

List<int> zeros = List.filled(10, 0)

这将创建一个包含10个零的列表.

您需要注意的一点是,如果您使用对象初始化列表,例如:

SomeObject a = SomeObject();
List<SomeObject> objects = List.filled(10, a);

上面创建的列表在所有位置上都有相同的对象a实例.

List.generate(int length, E generator(int index), {bool growable:true})

比如:

List<SomeObject> objects = List<SomeObject>.generate(10, (index) => SomeObject(index);

或者:

List<SomeObject> objects = List<SomeObject>.generate(10, (index) { 
      SomeOjbect obj = SomeObject(index)
      obj.id= index;
      return obj;
});

这将为列表中的每个职位创建一个新实例.初始化对象的方式由您决定.

Dart相关问答推荐

什么相当于 dart 中的 JAVA ThreadLocal?

当未指定返回类型时,dart 显示另一个函数内部的确切返回类型,但对于顶层函数显示为动态

Dart 中的const关键字放置有什么不同?

如何在 Dart 中返回函数?

Dart JavaScript 与 jQuery 的互操作回调

如何在 Flutter 中忽略整个文件的 lint 规则?

Flutter 中的 authStateChanges

如何在 Flutter 的小部件树中将新的 MaterialPageRoute 作为子项打开

Flutter 屏幕尺寸计算

Flutter:测试期间的计时器问题

Flutter Drawer Widget - 更改 Scaffold.body 内容

无法导入 dart 的 intl 包

在 Dart 中修改类内的最终字段

dart 如何创建、监听和发出自定义事件?

如何在 Dart 2 中将 List 更改为 List

可以在 Dart 中的抽象类中声明静态方法吗?

比较在 Dart 中创建单例的方法

如何在 Dart 中进行整数除法?

Angular.js 和 Angular.dart 的区别?

你需要在 Dart 中使用new关键字吗?