今回は、前回の続きとしてFlutterからFirestoreにデータの保存の仕方について紹介します。
Firestore側のデータベースは、以下のようになっています。ここから名前(name)、年齢(age)のデータを送信して、Firestoreに保存します。
やり方として、Firestoreのインスタンスを作成して、接続するコレクション(データベース)を定義します。
db
にFirebaseFirestore
のインスタンスを作成します。
static final FirebaseFirestore db = FirebaseFirestore.instance;
users
にfirestoreのusers
のデータを格納します。
static final CollectionReference users = db.collection('users');
main.dart
を開き、_MyHomePageState
クラスに上記の2行を追加します。
main.dart
class _MyHomePageState extends State<MyHomePage> {
static final FirebaseFirestore db = FirebaseFirestore.instance;
static final CollectionReference users = db.collection('users');
次にfloatingActionButton
ボタンを押したら、nameにdoc
、ageに3
のデータをusers
に追加するaddUser
メソッドを作ります。
users
のコレクションにフィールド
(name、age)に対応したデータを定義します。
Future<void> addUser() async {
await users.add({'name': 'dog', 'age': 3});
}
最後に、floatingActionButton
のonPressed
したときの、メソッドをaction
に変更すれば、ボタンを押した時の動作が繋がります。
floatingActionButton: FloatingActionButton(
onPressed: addUser,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
class _MyHomePageState extends State<MyHomePage> {
static final FirebaseFirestore db = FirebaseFirestore.instance;
static final CollectionReference users = db.collection('users');
Future<void> addUser() async {
users.add({'name': 'dog', 'age': 3});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
//<省略>
),
floatingActionButton: FloatingActionButton(
onPressed: addUser,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
起動して、フローティングアクションボタンを押すとデータが追加されます。
ボタンを押すごとに、age 3
、name dog
が追加されます。このように、Flutterから簡単にFirestoreに接続してデータを保存することができます。