Flutter × Firestore まとめ


FlutterのFirebaseへの接続

FlutterアプリにFirebaseを追加する

注意

cloud_firestoreのインポートの記述や、StreamBuilderのロード中,データがない時の記述は無視していますので、その点ご了承ください。

Firestoreデータ取得

userというコレクションからデータを取得する想定。

main.dart
List<String> _emails;
@override
void initState(){
  fetchUserData();
}
void fetchUserData() async{
  QuerySnapshot snapshot = await Firestore.instance.collection('user').getDocuments();
  for(var i = 0; i < snapshot.documents.length; i++){
    _emails.add(snapshot.documents[i].data['email']);
  }
}

Firestoreデータ取得(ドキュメントID指定)

userというコレクションからデータを取得する想定。
documentIdに取得したいドキュメントIDを指定します。

main.dart
String _email;
@override
void initState(){
  fetchUserData();
}
void fetchUserData() async{
  DocumentSnapshot snapshot = await Firestore.instance.collection('user').document(documentId).get();
  _email = snapshot.data['email'];
}

Firestoreデータ取得して表示

userというコレクションからデータを取得し表示する想定。
StreamBuilderで更新を監視。

main.dart
@override
Widget build(BuildContext context) {
  return StreamBuilder(
    stream: Firestore.instance.collection('user').snapshots(),
    builder: (context, snapshot) {
      return ListView.builder(
        itemCount: snapshot.data.documents.length,
        itemBuilder: (context, index) {
          return Text(snapshot.data.documents[index].data['email']);
        },
      );
    },
  );
}

Firestoreデータ取得して表示(ドキュメントID指定)

userというコレクションからデータを取得し表示する想定。
documentIdに取得したいドキュメントIDを指定します。
StreamBuilderで更新を監視。

main.dart
@override
Widget build(BuildContext context) {
  return StreamBuilder(
    stream: Firestore.instance.collection('user').document(documentId).snapshots(),
    builder: (context, snapshot) {
      return Text(snapshot.data["email"]);
    },
  );
}

Firestoreデータ追加

userというコレクションにデータを追加する想定。
setData()メソッドでデータを追加します。

main.dart
onPressed: () {
  Map<String, dynamic> insertData = {
    'username': 'engineerhikaru',
    'email': '[email protected]',
  }
  Firestore.instance.collection('user').document().setData(insertData);
}

Firestoreデータ更新

userというコレクションのデータを更新する想定。
updateData()メソッドで指定したドキュメントIDのデータを更新します。
documentIdに更新したいドキュメントIDを指定します。

main.dart
onPressed: () {
  Map<String, dynamic> updateData = {
    'username': 'engineerhikaru',
    'email': '[email protected]',
  }
  Firestore.instance.collection('user').document(documentId).updateData(updateData);
}

Firestoreデータ削除

userというコレクションのデータを削除する想定。
delete()メソッドで指定したドキュメントIDのデータを削除します。
documentIdに削除したいドキュメントIDを指定します。

main.dart
onPressed: () {
  Firestore.instance.collection('user').document(documentId).delete();
}

まとめ

この記事が良いと思った方は、LGTMをしていただければ嬉しいです!
フォローも是非お願い致します(^^)