Firebase
のプロジェクトを作成したら、FirebaseコンソールでCloud Firestore
に移動し、ワークフローに従って開始モードの選択(テストモード
orロックモード
)→ロケーションの設定→完了ボタン
の順に進めて頂いたら、
1.FlutterとFirebaseの初期化と紐付け
2.プラグインのインストール
flutter pub add cloud_firestore
3.flutter run
で再ビルド
4.CocoaPods
が1.9.1
以降にアップグレードされているか確認。
gem install cocoapods
5.パッケージの追加
pubspec.yaml
dependencies:
flutter:
sdk: flutter
cloud_firestore: ^X.X.X
6.iOS
のエラーが出ていなければインスタンスを初期化し使用可能。
import 'package:cloud_firestore/cloud_firestore.dart';
final db = FirebaseFirestore.instance;
それではいくつかメソッドを紹介していきます。
こちらのボタンから("dbs")
コレクションを作成し、
データを追加(.add( )
)
import 'package:cloud_firestore/cloud_firestore.dart';
// Firestoreの("dbs")コレクションを参照
final db = FirebaseFirestore.instance.collection("dbs");
// 別で作成したStopWatchオブジェクトをもとにデータを入れ保存
Future<String> createTimer(String uid, StopWatch db) async {
final timer = await db.add({
"uid": uid,
"category": db.category,
"minutes": db.minutes,
"startedAt": DateTime.now(),
});
return timer.id;
}
追加したデータを取り出す(.get( )
)
Future<StopWatch?> findTimer(String id) async {
final timer = await dbs.doc(id).get();
if (!timer.exists) return null;
return StopWatch(
category: timer['category'],
minutes: timer['minutes'],
startedAt: (timer['startedAt'] as Timestamp).toDate());
}
データの上書き(.update( )
)
Future<void> updateTimer(
String id, num minutes, DateTime startedAt, String category) async {
await dbs.doc(id).update(
{'category': category, 'minutes': minutes, 'startedAt': startedAt});
}
データの削除(.delete( )
)
Future<void> deleteTimer(String id) async {
await dbs.doc(id).delete();
}
と、まだまだドキュメントを読むと色々な組み合わせで応用できます。