假设:计划与执行

Assume App 是一款开源的移动应用程序,您可以在其中管理您的计划并查看您已完成任务的统计信息。此外,应用程序中还有一些区域可以根据您自己的喜好进行自定义。

该应用程序目前仅在 Google Play 商店发布。

Google Play 商店

官方网站

功能

  • 浅色/深色模式切换
  • 应用主颜色可更改(调色板有 16 种颜色)
  • 语言支持(目前为英语/土耳其语)
  • 身份验证包含
  • 用于忘记密码的电子邮件服务
  • 任务通知
  • 任务统计
  • 创建任务操作
  • 任务的计划-运行-完成操作
  • 任务的归档操作

使用的技术

编程语言: Dart

框架: Flutter SDK

后端服务: Firebase (Firebase Cloud Firestore 和 Firebase Authentication)

状态管理: Provider

配置: Flavor, Flutter Dotenv

通知: Flutter Local Notifications

缓存服务: Hive

UI 工具: Figma, Canva

所有包和库

名称 版本 描述
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] 联系我们

感谢

许可证

MIT

GitHub

查看 Github