Firebaseで下記のような複数のフィールドに対してwhereやorderByを行うクエリ(複合クエリ)を投げる場合、複合インデックスを作成していないといけません。
FirebaseFirestore.instance
.collection("post")
.where("uid", isEqualTo: user.uid)
.orderBy("timestamp", descending: true)
.snapshots()
複合インデックスは、Firestoreの設定画面で簡単に作成できます。
早速やってみましょう!
複合インデックスの追加画面を開く
firebaseで対象プロジェクトのコンソールを開き
「Cloud Firestore」 → 「インデックス」 → 「複合」 → 「インデックスを追加」の順にクリックし、インデックスの追加画面を開きます。
複合インデックスを追加する
表示されたダイアログに複合インデックスの情報を記入し、インデックスを作成ボタンをクリックします。
追加後にindexが作成されるまでしばらく時間がかかります。
完了すると、FlutterからwhereとorderByを同時に実行できるようになります。