mcpField
F
flutter-firebase

flutter-firebase

github.com/dhruvanbhalara開発30326 回インストール8 週間前に更新
リポジトリ

flutter-firebase について

flutter-firebaseは、FlutterアプリでのFirebase設定と主要サービスの構成を扱う開発スキルです。認証、Firestore、通知、クラッシュレポート、分析、Remote Configに加え、セキュリティとテストの指針を示します。

主な機能

  1. 01Firebase初期化とflavor設定
  2. 02Repositoryを介した認証パターン
  3. 03型付きFirestoreアクセスとバッチ書き込み
  4. 04FCM通知の各状態への対応
  5. 05CrashlyticsとAnalyticsの設定
  6. 06Remote Configの初期値と取得方針

活用シーン

  1. 01FlutterアプリでFirebaseサービスを設定
  2. 02AuthRepositoryを通じた認証処理の整理
  3. 03Firestoreで型付きデータを永続化
  4. 04通知、クラッシュレポート、分析の設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dhruvanbhalara/skills --skill flutter-firebase

インストール後、Claude Code で/flutter-firebaseを入力して読み込まれたか確認します。

詳細

Firebase のセットアップ

  • 初期化には firebase_core を使用します。runApp() の前に Firebase.initializeApp() を呼び出してください
  • プラットフォーム固有のセットアップには flutterfire configure を使用します
  • フレーバーごとに個別の Firebase プロジェクトを使用します(app-config スキルを参照)
  • 一貫した DI のために、injectable を介して Firebase サービスを登録します

認証

  • ユーザー管理には firebase_auth を使用します
  • すべての認証呼び出しを AuthRepository でラップします。BLoC や UI で FirebaseAuth を直接使用しないでください
  • 少なくともメールアドレス/パスワード、Google サインイン、Apple サインインをサポートします
  • AuthBloc 内の FirebaseAuth.instance.authStateChanges() ストリームを介して認証状態の変化を処理します
  • 認証トークンは flutter_secure_storage を介して保存します。SharedPreferences やソースコードには決して保存しないでください
  • 適切なサインアウトを実装します。ローカルキャッシュをクリアし、ログイン画面に遷移し、ユーザー固有の BLoC を破棄します

Firestore

  • リモートデータの永続化には cloud_firestore を使用します
  • DataSource はすべての Firestore 呼び出し(get、set、update、delete、snapshots)をラップします
  • fromFirestore / toFirestore ファクトリメソッドを備えた型付きモデルクラスを使用します
  • 型安全なコレクション参照には .withConverter<T>() を優先します
  • 複数ドキュメントの操作にはバッチ書き込みを使用します。複数の逐次書き込みは決して行わないでください
  • オフライン永続化を実装します(モバイルではデフォルトで有効)

セキュリティルール

  • クライアント側の検証だけに決して頼らないでください。Firestore セキュリティルールでルールを適用します
  • デフォルト拒否: allow read, write: if false; から始めて、必要なものだけを開放します
  • 認証済みユーザー専用のコレクションでは、常に request.auth != null を検証します
  • デプロイ前に Firebase Emulator Suite でルールをテストします

プッシュ通知(FCM)

  • プッシュ通知には firebase_messaging を使用します
  • 通知権限は早めに、しかし丁寧にリクエストします(リクエストする前にその価値を説明します)
  • フォアグラウンド、バックグラウンド、終了状態のメッセージを個別に処理します
  • サーバー側でのターゲティングのために、FCM トークンを Firestore のユーザードキュメントに保存します
  • onTokenRefresh ストリームでトークンを再登録します

Crashlytics

  • クラッシュレポートには firebase_crashlytics を使用します
  • staging および production フレーバーでのみ有効にします。dev では無効にします
  • Flutter エラーを記録します: FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError
  • PlatformDispatcher.instance.onError を介して非同期エラーを捕捉します
  • ユーザーコンテキスト用のカスタムキーを追加します: Crashlytics.instance.setCustomKey('userId', id)

アナリティクス

  • ユーザー行動のトラッキングには firebase_analytics を使用します
  • 説明的な名前で意味のあるイベントをログに記録します: analytics.logEvent(name: 'purchase_completed')
  • セグメンテーション用のユーザープロパティを設定します: analytics.setUserProperty(name: 'plan', value: 'pro')
  • GoRouter 内の FirebaseAnalyticsObserver を介して画面ビューをトラッキングします
  • アナリティクスイベントに PII(メールアドレス、パスワード、電話番号)を決して記録しないでください

Remote Config

  • フィーチャーフラグと A/B テストには firebase_remote_config を使用します
  • ローカルで適切なデフォルト値を設定します。アプリは Remote Config を取得しなくても動作しなければなりません(MUST)
  • アプリ起動時にタイムアウトのフォールバックを付けて取得およびアクティベートします
  • スロットリングを避けるために、値をキャッシュし、最小取得間隔を守ります

コメント