🎉
【Flutter】forEachと.mapでawaitさせる
初めに
すごくただのメモです。
forEachでawait
[通常]
dataList.forEach((data) {
//処理
});
[await]
await Future.forEach(dataList,(data) {
//処理
});
.mapでawait
.map内で、取得したデータを引数にして別の関数を実行し、その返り値を利用する。
[通常]
dataList = docs.map((doc) => dataListModel(
a: doc['a'],
b: doc['b'],
c: doc['c'],
)).toList();
[await]
dataList = await Future.wait(docs.map((doc) async {
final fetchedData = await function(doc['b']); //待たせたい処理
return dataListModel(
a: doc['a'],
b: fetchedData,
c: doc['c'],
);
}).toList());
awaitが機能しているか確認
await Future.delayed(Duration(seconds: 5));
参考
余談
記述した二つを利用して、クライアント側でFireStoreのデータをjoinしましたが、
そもそもfirestoreはNoSQLなのでjoinするような仕組みにすべきではない。(自戒)
Discussion