虎視眈々と

Flutter × Firebaseを研究するアプリエンジニア

FlutterでCloud Firestoreとやりとりするチートシート

よく使うので個人的なメモとして残しておきます。 FlutterとFirebaseの連携方法については下記をご覧ください

www.shogogeek.com

データの保存

add

  • addした場合は新しいDocumentIdが生成されて新しいレコードとして保存される
Future<void> newGroup() {
    return Firestore.instance.collection("hoge").add({
      "hoge": hogehoge
    });
}

set

  • setした場合は指定のDocumentIDとしてデータを保存できる
Future<void> editGroup() {
    var db = Firestore.instance;
    return db.collection("group").document(groupID).setData({
      "hoge": hogehoge
    });
  }

参照

  • 普通にデータを取得する
  Stream<QuerySnapshot> getGroupItem(String groupId) {
    return Firestore.instance
        .collection("group")
        .document(groupId)
        .get();
  }
  • snapshotとしてデータを取得する
  Stream<QuerySnapshot> getGroupItem(String groupId) {
    return Firestore.instance
        .collection("group")
        .document(groupId)
        .snapshots();
  }
  • Document一覧を取得する
  Stream<QuerySnapshot> getGroupItem(String groupId) {
    return Firestore.instance
        .collection("group")
        .getDocuments();
  }
  • 取得順序の指定 order by

更新順序順に表示する

Stream<QuerySnapshot> getGroupItem(String groupId) {
    return Firestore.instance
        .collection("group")
        .orderBy("updated_at", descending: true)
        .snapshots();
  }
  • データを指定する where

タイトルが同じものだけ取得する

Stream<QuerySnapshot> searchGroup(String title) {
    return Firestore.instance
        .collection("group")
        .where("title", isEqualTo: title)
        .snapshots();
    }

データのupdate

Future<void> _uploadImage(String documentId,) async {
    return Firestore.instance
        .collection("group")
        .document(documentId)
        .updateData({"documentId": documentId});
  }

データの削除

Future<void> removeImage(String groupId) {
    return Firestore.instance
        .collection("group")
        .document(groupId)
        .delete();
  }