【问题标题】:How to Initialize the List with the same element in flutter dart?如何在颤振飞镖中使用相同的元素初始化列表?
【发布时间】:2020-03-24 23:42:34
【问题描述】:

我在 dart 中有一个列表,我想用 n 相同元素的编号初始化列表。 示例:- 用元素 5 初始化整数列表 4 次。 List<int> temp = [5,5,5,5]; 在 dart Flutter 中初始化列表有哪些不同的方法?

【问题讨论】:

    标签: list flutter dart


    【解决方案1】:

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

    参数是:

    • length - 列表中元素的数量
    • E 填充 - 列表中应包含什么元素
    • 可增长的 - 如果您想要动态长度;

    所以你可以:

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

    这将创建一个包含十个零的列表。

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

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

    上面创建的列表将在所有位置上具有对象 a 的相同实例。 如果你想在每个位置都有新的对象,你可以使用:

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

    类似:

    List&lt;SomeObject&gt; objects = List&lt;SomeObject&gt;.generate(10, (index) =&gt; SomeObject(index);

    或者:

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

    这将为列表中的每个位置创建一个新实例。初始化对象的方式取决于您。

    【讨论】:

    • 这是我要初始化对象的问题?有没有办法多次创建同一个对象?
    • 在生成时如何引用正在生成的这个对象? this 关键字会起作用吗?
    【解决方案2】:

    你可以这样试试

    List<int>.generate(4, (int index) => 5);
    

    更多信息,read this

    【讨论】:

      【解决方案3】:

      这是已接受答案的简化版本。您可以使用列表文字填充列表生成的列表

      final literal = [5, 5, 5, 5];
      final filled = List.filled(4, 5);
      final generated = List.generate(4, (index) => 5);
      
      print(literal);   // [5, 5, 5, 5]
      print(filled);    // [5, 5, 5, 5]
      print(generated); // [5, 5, 5, 5]
      

      当您只想用相同的值填充列表时,List.filled 很好。除非你真的想要[5, 5, 5, 5]。在这种情况下,只需使用列表文字。它易于阅读和理解。

      【讨论】:

        猜你喜欢
        • 2021-07-27
        • 2021-01-24
        • 2020-08-12
        • 1970-01-01
        • 2020-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多