Звучит так, как будто вы хотите функцию zip
, которую дартс не предоставляет по умолчанию. Быстрая реализация будет выглядеть примерно так:
List<T3> zipList<T1, T2, T3>(List<T1> l1, List<T2> l2, T3 Function(T1, T2) zipper) {
if (l1.isEmpty) throw ArgumentError.value(l1, "l1", "input list cannot be empty");
if (l1.length != l2.length) throw ArgumentError("Two lists must have the same length");
var result = List<T3>(l1.length);
for(var i = 0; i < l1.length; i++) {
result.add(zipper(l1[i], l2[i]));
}
return result;
}
// here a quick example of how to use it.
class Bar {
final int i;
final String s;
Bar(this.i, this.s);
@override
String toString() => "Bar: $i - $s";
}
void testZipList() {
var list1 = [1,2,3];
var list2 = ["", "2", ""];
var bars = zipList(list1, list2, (l1, l2) => Bar(l1, l2));
bars.forEach(print);
}