📌
Cloud Firestore #Flutter
Flutter cloud firestoreの導入
Cloud Firestoreとは
データベースの選定
データベースはCloud FirestoreとRealtime Databaseがある
データベースの作成
FirebaseのサイトでCloud Firestoreのデータベースを作成する
リージョンについては、下記を選定
FireStoreのデータ構造について
FireStoreはコレクション、ドキュメント、サブコレクションからなる
↓参考
実装方法
build.gradeに下記を追加する
Android/app/build.grade
dependencies {
implementation 'com.google.firebase:firebase-auth:16.1.0'
implementation 'com.google.firebase:firebase-core:17.0.0'
implementation 'com.google.firebase:firebase-firestore:21.2.1'
}
packageのimport
main.dart
import 'package:cloud_firestore/cloud_firestore.dart';
"user"コレクションの中に各ユーザidごとのドキュメントを作成
- authインスタンスを作成し、ユーザidを取得
- "user"という名前のコレクションを作成する
- "user"コレクションに取得したユーザid(uid)ごとのドキュメントを作成
- ユーザidドキュメントにニックネームを格納(setData() , アップデート時はupdateData() )
- 格納されたニックネームをget()で取得
- print()でニックネームをコンソールに表示
FirebaseAuth auth =
FirebaseAuth.instance; // FirebaseAuthのインスタンス作成
final FirebaseUser user = await auth.currentUser(); //ユーザ取得
final uid = user.uid; //ユーザid取得
print(uid); //ターミナルにユーザid表示
// ユーザidの取得はFirebase Authのバージョンにより、方法が異なるので要注意
// https://stackoverflow.com/questions/54000825/how-to-get-the-current-user-id-from-firebase-in-flutter
await Firestore.instance
.collection('user')
.document('${uid}')
.setData({'nickname': '${_nickName}'});
// データをアップデートする場合は.updateDataを使う
// .updateData({'nickname': '${_nickName}'});
// 先ほど定義したニックネームデータを取得してみる
final define_nickName = await Firestore.instance
.collection('user')
.document('${uid}')
.get();
// コンソールに取得したニックネームを表示
print('${define_nickName['nickname']}');
実際にデータベースに反映されている↓
サブコレクションも基本的には同様の使い方
// サブコレクションを使う例(後で消す)
await Firestore.instance
.collection('user')
.document('${uid}')
.collection('user_more_info')
.document('user_status')
.setData({'like': '', 'favorite': '', 'matching': ''});
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SignUp4()),
);
実際にデータベースに反映されている↓
参考サイト
非同期処理
Effective Dart
Fluuter公式FireStore実装
参考になるfirebase実装サイト
FireStoreデータ構造
Discussion