mcpField
F
flutter-firebase

flutter-firebase

github.com/dhruvanbhalara开发30326 次安装8 周前更新
代码仓库

关于 flutter-firebase

flutter-firebase 是一项 Flutter 开发技能,介绍 Firebase 的配置及常见应用服务组织方式,涵盖身份验证、Firestore、通知、崩溃报告、分析和 Remote Config,并包含安全与测试指导。

主要功能

  1. 01Firebase 初始化与 flavor 配置
  2. 02基于 Repository 的身份验证模式
  3. 03类型化 Firestore 数据访问与批量写入
  4. 04FCM 通知生命周期处理
  5. 05Crashlytics 与 Analytics 配置
  6. 06Remote Config 默认值与获取策略

适用场景

  1. 01在 Flutter 应用中配置 Firebase 服务
  2. 02通过 AuthRepository 组织身份验证
  3. 03使用 Firestore 持久化类型化数据
  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 进行平台特定的配置
  • 每个 flavor 使用独立的 Firebase 项目(参见 app-config 技能)
  • 通过 injectable 注册 Firebase 服务,确保 DI 一致

身份验证

  • 使用 firebase_auth 管理用户
  • 将所有身份验证调用封装在 AuthRepository 中:BLoC 或 UI 中不得直接使用 FirebaseAuth
  • 至少支持电子邮件/密码、Google Sign-In 和 Apple Sign-In
  • 在 AuthBloc 中通过 FirebaseAuth.instance.authStateChanges() 流处理身份验证状态变化
  • 使用 flutter_secure_storage 存储身份验证令牌:绝不能存放在 SharedPreferences 或源代码中
  • 实现妥善的退出登录:清除本地缓存、导航至登录页、释放用户专属的 BLoC

Firestore

  • 使用 cloud_firestore 持久化远程数据
  • 由 DataSource 封装所有 Firestore 调用(get、set、update、delete、snapshots)
  • 使用带类型的模型类,并提供 fromFirestore / toFirestore 工厂方法
  • 优先使用 .withConverter<T>() 创建类型安全的集合引用
  • 对多文档操作使用批量写入:绝不要多次顺序写入
  • 实现离线持久化(移动端默认启用)

安全规则

  • 绝不要仅依赖客户端验证:在 Firestore Security Rules 中强制执行规则
  • 默认拒绝:从 allow read, write: if false; 开始,只开放必要的权限
  • 对仅限已验证身份的集合,始终验证 request.auth != null
  • 部署前使用 Firebase Emulator Suite 测试规则

推送通知(FCM)

  • 使用 firebase_messaging 处理推送通知
  • 尽早请求通知权限,但应循序渐进(请求前先说明其用途)
  • 分别处理前台、后台和已终止状态下的消息
  • 将 FCM 令牌存储在 Firestore 用户文档中,以便在服务端进行定向发送
  • 通过 onTokenRefresh 流重新注册令牌

Crashlytics

  • 使用 firebase_crashlytics 报告崩溃
  • 仅在 staging 和 production flavor 中启用:在 dev 中禁用
  • 记录 Flutter 错误:FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError
  • 通过 PlatformDispatcher.instance.onError 捕获异步错误
  • 添加用户上下文自定义键:Crashlytics.instance.setCustomKey('userId', id)

Analytics

  • 使用 firebase_analytics 跟踪用户行为
  • 使用描述性名称记录有意义的事件:analytics.logEvent(name: 'purchase_completed')
  • 设置用户属性以进行细分:analytics.setUserProperty(name: 'plan', value: 'pro')
  • 通过 GoRouter 中的 FirebaseAnalyticsObserver 跟踪屏幕浏览
  • 绝不要在分析事件中记录 PII(电子邮件、密码、电话号码)

Remote Config

  • 使用 firebase_remote_config 管理功能开关并进行 A/B 测试
  • 在本地设置合理的默认值:即使未获取 Remote Config,应用也必须正常运行
  • 在应用启动时获取并激活配置,并设置超时回退
  • 缓存值并遵循最小获取间隔,以避免触发限流

评论

支持 Markdown