我试图用不同的来源填充Flutter中的ListView。所以,我有两个 list ,

list1 = ['a', 'b', 'c']; #The list isn't of numeric type
list2 = ['2', '4'];

现在,我可以使用spread运算符将它们合并,并获得以下输出
[a, b, c, 2, 4]

但我希望输出像-
[a, 2, b, 4, c]

如何做到这一点?什么是最惯用的方法?

最佳答案

内置Iterable没有方法zip,但是您可以编写如下内容:

Iterable<T> zip<T>(Iterable<T> a, Iterable<T> b) sync* {
  final ita = a.iterator;
  final itb = b.iterator;
  bool hasa, hasb;
  while ((hasa = ita.moveNext()) | (hasb = itb.moveNext())) {
    if (hasa) yield ita.current;
    if (hasb) yield itb.current;
  }
}

然后使用zip
  final list1 = ['a', 'b', 'c'];
  final list2 = ['2', '4'];
  final res = zip(list1, list2);
  print(res); // (a, 2, b, 4, c)

关于flutter - Dart以交替方式合并两个列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59092568/

10-13 09:36