LoginSignup
39
29

More than 3 years have passed since last update.

Flutter × Firestore まとめ

Last updated at Posted at 2020-07-10

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': 'example@gmail.com',
  }
  Firestore.instance.collection('user').document().setData(insertData);
}

Firestoreデータ更新

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

main.dart
onPressed: () {
  Map<String, dynamic> updateData = {
    'username': 'engineerhikaru',
    'email': 'example@gmail.com',
  }
  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をしていただければ嬉しいです!
フォローも是非お願い致します(^^)

39
29
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
29