使用 Flutter 和 Firebase 的时间跟踪应用
一个使用 Flutter 和 Firebase 构建的时间追踪应用程序
![]()
这是我基于 Riverpod 架构 的**参考应用**。
注意:此项目以前称为“Flutter & Firebase 的入门架构”(基于这篇 旧文章)。截至 2023 年 1 月,它遵循我更新的 Riverpod 架构,并使用了最新的软件包。
Flutter Web 预览
此应用的 Flutter Web 预览可在此处查看。
功能
- 简单的引导页
- 完整的认证流程(使用电子邮件和密码)
- 工作:用户可以查看、创建、编辑和删除他们自己的私人工作(每项工作都有名称和时薪)
- 记录:对于每项工作,用户可以查看、创建、编辑和删除相应的记录(记录是一项任务,包含开始和结束时间,以及可选的评论)
- 报告页面,显示所有工作的每日明细、工作时长和收入,以及总计。
所有数据都通过 Firestore 持久化,并在多个设备之间保持同步。
路线图
- 添加缺失的测试
- 状态化嵌套导航(自 GoRouter 7.1 起可用)
- 在应用中一致地使用控制器/通知器(部分代码仍需更新)
- 添加本地化
- 在适用的地方使用新的 Firebase UI 软件包
- 响应式 UI
这是一个暂定的路线图。以上任何一项都没有预估时间。这是一个低优先级的项目,我没有太多时间来维护它。
相关文章
该应用基于我的 Flutter Riverpod 架构,这在此处有详细解释。
有关 Riverpod 的更多信息,请阅读此文。
使用的软件包
以下是应用中使用的主要软件包
- Flutter Riverpod 用于数据缓存、依赖注入等。
- Riverpod Generator 和 Riverpod Lint 用于最新的 Riverpod API。
- GoRouter 用于导航。
- Firebase Auth 和 Firebase UI Auth 用于认证。
- Cloud Firestore 作为实时数据库。
- Firebase UI for Firestore 用于支持分页的
FirestoreListView小部件。 - RxDart 用于按需组合多个 Firestore 集合。
- Intl 用于货币、日期、时间格式化。
- Mocktail 用于测试。
- Equatable 用于减少模型类中的样板代码。
有关完整列表,请参阅 pubspec.yaml 文件。
使用 Firebase 运行项目
要将此项目与 Firebase 配合使用,请按照以下步骤操作:
- 使用 Firebase 控制台创建一个新项目
- 在 Firebase 控制台(认证 > 登录方法 > 电子邮件/密码 > 编辑 > 启用 > 保存)中启用 Firebase 认证以及电子邮件/密码认证登录提供商。
- 启用 Cloud Firestore。
然后,按照以下两种方法之一进行操作。?
1. 使用 CLI
确保您已安装 Firebase CLI 和 FlutterFire CLI。
然后从项目根目录在终端中运行此命令:
- 运行
firebase login,以便您可以访问您创建的 Firebase 项目。 - 运行
flutterfire configure并按照所有步骤操作。
有关更多信息,请遵循本指南:
2. 手动方式(不推荐)
如果您不想使用 FlutterFire CLI,请改用以下步骤:
- 在 Firebase 项目设置中单独注册 iOS、Android 和 Web 应用。
- 在 Android 上,使用
com.example.starter_architecture_flutter_firebase作为包名。 - 然后,下载并复制
google-services.json到android/app。 - 在 iOS 上,使用
com.example.starterArchitectureFlutterFirebase作为捆绑 ID。 - 然后,下载并复制
GoogleService-Info.plist到iOS/Runner,并将其添加到 Xcode 中的 Runner 目标。
就是这样。祝您使用愉快!