はじめに
初めてFirebaseを実装したので、操作の仕方を忘れないようにCRUD(Create Read Update Delete)のやり方をアウトプットしようと思います。
データの挿入
Future addFirebaseData() async{
await FirebaseFirestore.instance.collection("posts").add({//インスタンスを取得しコレクションを指定
'name': 'Flutter',//追加するデータはmap型で指定
'text': newWord,
'createdAt': DateTime.now(),
});
}
データの表示
Future _fetchFirebaseData() async{
await FirebaseFirestore.instance.collection("posts").orderBy('createdAt').get().then((event) {//コールバック関数を渡す
final docs = event.docs;//取得したドキュメントのリスト
setState(() {//画面を更新する
posts = docs.map((doc){//各要素に対して処理を行う。docは現在のドキュメント
final data = doc.data();//現在のドキュメントのデータを取得
final id = doc.id;
final text = data['text'] as String;
final createdAt = data['createdAt'].toDate();//Timestamp型をDateTime型(日付や時間)に変換
final updatedAt = data['updatedAt']?.toDate();
return Post(//取得したデータを使用し、Postオブジェクトを生成し返す
id:id,//左がPostクラスのフィールド、右が取得したデータ
text:text,
createdAt:createdAt,
updatedAt:updatedAt
);},
).toList();//Listに変換する
});
});
}
データの更新
Future updateFirebaseData() async{
await FirebaseFirestore.instance.collection("posts").doc(widget.post.id).update({//ドキュメントIDを使用して、特定のドキュメントを参照
'name': 'Flutter',
'text': updatedWord,
'updatedAt': DateTime.now(),
});
}
データの削除
Future deleteFirebaseData(String id) async{
await FirebaseFirestore.instance.collection("posts").doc(id).delete();//ドキュメントIDを指定して削除 。引数はいらない
}
実装したコード
参考資料
【Flutter×Firebase2024】Firestoreの値を表示
【Flutter×Firebase2024】Firestoreに値を追加