假设:计划与执行
Assume App 是一款开源的移动应用程序,您可以在其中管理您的计划并查看您已完成任务的统计信息。此外,应用程序中还有一些区域可以根据您自己的喜好进行自定义。
该应用程序目前仅在 Google Play 商店发布。
功能
- 浅色/深色模式切换
- 应用主颜色可更改(调色板有 16 种颜色)
- 语言支持(目前为英语/土耳其语)
- 身份验证包含
- 用于忘记密码的电子邮件服务
- 任务通知
- 任务统计
- 创建任务操作
- 任务的计划-运行-完成操作
- 任务的归档操作
使用的技术
编程语言: Dart
框架: Flutter SDK
后端服务: Firebase (Firebase Cloud Firestore 和 Firebase Authentication)
状态管理: Provider
配置: Flavor, Flutter Dotenv
通知: Flutter Local Notifications
缓存服务: Hive
所有包和库
| 名称 | 版本 | 描述 |
|---|---|---|
| build_runner | ^2.3.3 | 一个编译和打包 Dart 代码的工具。 |
| cloud_firestore | ^4.4.3 | 一个用于使用 Firebase Cloud Firestore 的库。 |
| cupertino_icons | ^1.0.2 | 一个用于使用 Cupertino图标(iOS 风格图标)的库。 |
| encrypt | ^5.0.1 | 一个用于加密数据的库。 |
| firebase_auth | ^4.2.10 | 一个用于使用 Firebase 进行用户身份验证的库。 |
| firebase_core | ^2.7.0 | 一个用于使用 Firebase 基本功能的库。 |
| fl_chart | ^0.61.0 | 一个用于创建图表的库。 |
| flavor | ^2.0.0 | 一个用于创建应用不同风味的工具。 |
| flutter_colorpicker | ^1.0.3 | 一个用于在 Flutter 中选择颜色的控件。 |
| flutter_datetime_picker | ^1.5.1 | 一个用于选择日期和时间的库。 |
| flutter_dotenv | ^5.0.2 | 一个用于从 .env 文件加载环境变量的库。 |
| flutter_gen_runner | ^5.1.0+1 | 一个用于生成 Dart 代码的工具。 |
| flutter_local_notifications | ^13.0.0 | 一个用于显示本地通知的库。 |
| font_awesome_flutter | ^10.4.0 | 一个用于使用 Font Awesome 图标的库。 |
| google_sign_in | ^6.0.2 | 一个用于使用 Google 登录的库。 |
| hive | ^2.2.3 | 一个轻量级、快速的移动设备键值数据库。 |
| hive_flutter | ^1.1.0 | Hive 的官方 Flutter 集成。 |
| intl | ^0.17.0 | 一个用于国际化 Flutter 应用的库。 |
| logger | ^1.3.0 | 一个用于 Dart 和 Flutter 的日志记录实用程序。 |
| mailer | ^6.0.0 | 一个用于发送电子邮件的库。 |
| permission_handler | ^10.2.0 | 一个用于在移动设备上请求和检查权限的库。 |
| pin_code_fields | ^7.4.0 | 一个用于创建和验证 PIN 码的控件。 |
| provider | ^6.0.5 | 一个用于 Flutter 的状态管理解决方案。 |
| share_plus | ^6.3.1 | 一个用于分享 Flutter 应用内容的库。 |
| showcaseview | ^2.0.3 | 一个用于通过分步指南展示应用功能的控件。 |
| table_calendar | ^3.0.8 | 一个用于显示带有事件的日历的控件。 |
| timezone | ^0.9.1 | 一个用于处理 Dart 中时区的库。 |
| url_launcher | ^6.1.10 | 一个用于启动 URL 的库。 |
本地运行
克隆项目
git clone https://github.com/metecoban/assume_app
安装依赖项
flutter pub get
启动应用
flutter run lib/flavors/main_dev.dart
环境变量
-
要运行此项目,您需要在 .env 文件中添加以下环境变量
MY_EMAIL(用于邮件服务)MY_PASSWORD(用于邮件服务)CRYPTO_KEY(用于加密和解密) -
您还需要连接 Firebase
android/app/google-services.json(从 Firebase 生成文件)and
ios/Runner/GoogleService-Info.plist(从 Firebase 生成文件)
屏幕截图
| Splash 视图 | 登录视图 |
|---|---|
![]() |
![]() |
| 创建任务视图 | 完成视图 |
|---|---|
![]() |
![]() |
| 统计视图 | 应用设置视图 |
|---|---|
![]() |
![]() |
| 主颜色更改视图 |
|---|
![]() |
经验教训
-
我使用了具有 MVVM 结构和基类的样板代码。它有用于无状态小部件的基本视图。我为 StatefulWidget 添加了动态基础视图。
-
我使用了 L10n 进行本地化。我通过使用不依赖于上下文的静态方法,使错误消息适合 l10n。
-
我使用 Firebase 作为后端服务。我通过应用内的邮件服务解决了用户验证过程。(因为 Firebase 中没有像 OTP 邮件那样的自定义邮件操作。)从 Medium 阅读案例
反馈
如果您有任何反馈,请通过 [email protected] 联系我们
感谢
-
感谢 @gurkanfikretgunak 提供样板代码和所有建议。
-
感谢 @ebrusonmezoglu 设计的应用图标。







