Futuros e Iteráveis ​​em Dart

O que acontece se você precisar fazer um loop em um iterável e executar uma função que retorna um futuro em cada item?

Se não estiver preocupado com a ordem em que os resultados são retornados, você pode usar Future.wait e mapear o iterável assim:

Future<String> doSomething() {
var completer = new Completer();
List v = [];
v
['something'] = 'something';
Future.wait(my_list.map((item) => item.itemFunc())).then((List results) {
v
['results'] = results;
var str = JSON.encode(v);
completer
.complete(str);
}).catchError((e) {
print('There was an error: $e');
completer
.complete('');
});
return completer.future;
}