我试图用不同的来源填充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/