前提・実現したいこと
dart×firestoreで非同期のデータをFuture型でなく、意図した形で取得したいです。
発生している問題・エラーメッセージ
firestoreでは、or検索ができないため、現在のデータ構造上、ここにある案1を参考に、それぞれのクエリを実行して、ロジックで合体させる方法にしました。
そのため、実行するクエリを配列にした後に、[該当のソースコードに記載した処理]を呼び出し、実行した結果をソート処理に回そうとした際に発生しました。
想定では、この結果の返り値が
List<List<DocumentSnapshot>>
になるつもりでいたので、そこに
List result = await findQueryResult(queries);
var result = queryResults.expand((element) => element).toList();
して、フラットになった配列をソート処理に回すつもりでした。
しかし実際は
List<Future<List<DocumentSnapshot>>>
と、Future型が何故か入ってきてしまいます。
async/awaitで非同期処理を実行しているつもりでいたのですが、なぜFuture型が入ってきてしまうのかが理解できておらず、詰まってしましました。
大変恐縮ですが、こちらの解決方法をご教授頂けますと幸いです。
該当のソースコード
dart
1 Future<List<DocumentSnapshot>> findQueryResult(List<Query> queries) async { 2 List result = queries.map((element) async { 3 var r = (await element.getDocuments()).documents; 4 print(r); ←ここでは[Instance of 'DocumentSnapshot']になります。 5 return r; 6 }).toList(); 7 8 return result; 9 }
補足情報(FW/ツールのバージョンなど)
Flutter 1.20.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 216dee60c0 (3 days ago) • 2020-09-01 12:24:47 -0700
Engine • revision d1bc06f032
Tools • Dart 2.9.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/04 13:16