cloud_firestoreとは
cloud_firestore
は、FlutterアプリケーションでFirebase Cloud Firestore APIを使用するためのプラグインです。Cloud Firestoreは、リアルタイムの同期とオフラインサポートを備えたクラウドホスト型のNoSQLデータベースで、AndroidおよびiOSプラットフォームで利用可能です。このプラグインを使用することで、Flutterアプリケーションから直接Cloud Firestoreデータベースにアクセスし、データの読み書きが簡単に行えます。
cloud_firestore | Flutter package
Flutter plugin for Cloud Firestore, a cloud-hosted, noSQL database with live synchronization and offline support on Andr...
使い方
1. インストール
pubspec.yaml
ファイルに以下の依存関係を追加します:
dependencies:
flutter:
sdk: flutter
firebase_core: latest_version
cloud_firestore: ^5.0.0
2. Firebaseの設定
Firebaseプロジェクトを作成し、FirebaseコンソールからFlutterアプリに必要な設定ファイルをダウンロードします。設定ファイルをプロジェクトに追加し、以下のようにFirebaseを初期化します:
import 'package:firebase_core/firebase_core.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
3. Firestoreの使用
コレクションとドキュメントの参照
Cloud Firestoreではデータはコレクションとドキュメントに格納されます。以下の例では、users
コレクション内のすべてのドキュメントを取得します:
CollectionReference users = FirebaseFirestore.instance.collection('users');
Future<void> getUsers() async {
QuerySnapshot querySnapshot = await users.get();
final allData = querySnapshot.docs.map((doc) => doc.data()).toList();
print(allData);
}
ドキュメントの追加
新しいドキュメントをコレクションに追加するには、add
メソッドを使用します:
Future<void> addUser() {
return users.add({
'name': 'John Doe',
'age': 29,
'email': 'john.doe@example.com'
}).then((value) => print("User Added"))
.catchError((error) => print("Failed to add user: $error"));
}
ドキュメントの更新
既存のドキュメントを更新するには、ドキュメントIDを使用して参照し、update
メソッドを使用します:
Future<void> updateUser(String docId) {
return users
.doc(docId)
.update({'age': 30})
.then((value) => print("User Updated"))
.catchError((error) => print("Failed to update user: $error"));
}
ドキュメントの削除
ドキュメントを削除するには、delete
メソッドを使用します:
Future<void> deleteUser(String docId) {
return users
.doc(docId)
.delete()
.then((value) => print("User Deleted"))
.catchError((error) => print("Failed to delete user: $error"));
}
4. リアルタイムの更新
リアルタイムでデータの変更を監視するには、snapshots
メソッドを使用します:
users.snapshots().listen((QuerySnapshot snapshot) {
final allData = snapshot.docs.map((doc) => doc.data()).toList();
print(allData);
});
この方法により、データベースの変更がリアルタイムでアプリに反映されます。
5. オフラインデータ
Cloud Firestoreはデフォルトでオフラインデータをサポートしています。アプリがオフラインのときでも、データを読み書きし、再度オンラインになったときに同期が行われます。