带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控制台(Authentication > Sign-in method > Email/Password > Edit > Enable > Save)中启用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目标。
就是这样。玩得开心!