【问题标题】:How to split a list in Dart/Flutter [duplicate]如何在 Dart/Flutter 中拆分列表
【发布时间】:2021-05-20 23:43:23
【问题描述】:

我有一个字符串列表和一个整数。

int number = 3;
var items = ['foo', 'hey','yo','bar', 'baz', 'qux'];

如何按数量拆分此列表(要输出的列表数)。

输出:

List 1 = ['foo', 'hey']
List 2 = ['yo', 'bar']
List 3 = ['baz', 'qux']

【问题讨论】:

标签: list flutter dart split


【解决方案1】:
void main(List<String> args) {
  var n = 3;
  var items = ['foo', 'hey','yo','bar', 'baz', 'qux'];
  var m = (items.length / n).round();
  var lists = List.generate(n, (i) => items.sublist(m*i, (i+1)*m <= items.length ? (i+1)*m : null));

  print(lists);
}

结果:

[[foo, hey], [yo, bar], [baz, qux]]

【讨论】:

    【解决方案2】:

    返回一个包含 start 和 end 之间元素的新列表。

    新列表是一个List&lt;E&gt;,其中包含此列表中大于或等于 start 且小于 end 的位置的元素,其顺序与它们在此列表中出现的顺序相同。

    var colors = ["red", "green", "blue", "orange", "pink"];
    print(colors.sublist(1, 3)); // [green, blue]
    

    如果省略end,则默认为该列表的长度。

    print(colors.sublist(1)); // [green, blue, orange, pink]
    

    开始和结束位置必须满足0 ≤ start ≤ end ≤ this.length关系如果end等于start,则返回的列表为空。

    实施

    List<E> sublist(int start, [int? end]);
    

    【讨论】: