Listに対し、map関数でasync/awaitしたいとき

method() が Future<Hoge>を返すメソッドだとして

List<Hoge> hogeList = elements.map((e) async => await method(e)).toList();

これはNG。
この場合、hogeListはList<Future<Hoge>>のため、型エラーとなる。
map自体が返却する対象がasyncされているためFuture型を返すことになり、こういった挙動になる。

これを解消するためには、Future.waitを利用する。
これを使うことで非同期処理を並列に処理できるため、Iterable<Future<T>>を全て処理した上で返却してくれる。

List<Hoge> hogeList = await Future.wait(elements.map((e) => method(doc)).toList());