logo
0
0
WeChat Login
docs: 更新文档将 Hive 迁移至 Isar

可记

一个综合性的生活管理应用,帮助用户高效管理日常事务。

功能特性

📅 计划管理

  • 待办事项: 管理日常任务,支持优先级、分类、截止日期和提醒
  • 纪念日: 记录重要日期,支持农历和每年重复
  • 倒计时: 设定目标日期,实时显示剩余天数
  • 打卡: 养成良好习惯,支持多种频率
  • 出行计划: 规划旅行行程,管理行程细节和预算

💰 资产管理

  • 账户记账: 管理多个账户,记录收支
  • 物品管理: 记录物品信息和价值
  • 位置管理: 追踪物品存放位置

📝 随记

  • 随记: 记录生活点滴,支持富文本和图片
  • 心情: 记录每日心情状态
  • 地点记录: 记录去过的地方
  • 排班管理: 管理工作排班

🔐 密码管理

  • 安全存储: 加密存储所有密码
  • 生物识别: 支持指纹/面容解锁
  • 快速复制: 一键复制用户名和密码
  • 自动填充: 支持密码自动填充功能

⚙️ 个人中心

  • 数据统计: 查看使用统计和数据概览
  • 主题设置: 支持浅色/深色主题
  • 数据备份: 备份和恢复数据
  • 隐私保护: 完善的隐私政策和数据保护

技术栈

核心框架

  • Flutter 3.0+
  • Dart 3.0+

状态管理

  • flutter_bloc - BLoC状态管理模式

数据存储

  • isar - 高性能本地 NoSQL 数据库
  • isar_flutter_libs - Isar Flutter 集成
  • shared_preferences - 简单键值存储

加密安全

  • encrypt - 数据加密
  • crypto - 加密算法
  • local_auth - 生物识别

UI组件

  • flutter_slidable - 滑动操作
  • flutter_staggered_grid_view - 瀑布流布局
  • fl_chart - 图表展示
  • table_calendar - 日历组件
  • flutter_screenutil - 屏幕适配

工具库

  • intl - 国际化日期格式化
  • uuid - 唯一标识符生成
  • path_provider - 文件路径管理
  • permission_handler - 权限管理
  • flutter_local_notifications - 本地通知
  • lunar - 中国农历

项目结构

lib/ ├── core/ # 核心模块 │ ├── bloc/ # BLoC基类和观察者 │ ├── constants/ # 常量定义 │ ├── providers/ # 全局提供者(主题) │ ├── services/ # 服务层(Isar、高德地图、应用初始化) │ ├── theme/ # 主题配置 │ ├── utils/ # 工具类 │ └── widgets/ # 通用组件 ├── features/ # 功能模块 │ ├── home/ # 首页(底部导航外壳) │ ├── plan/ # 计划管理 │ │ ├── data/models/ # Isar 模型 │ │ └── presentation/ │ │ ├── bloc/ # 状态管理 │ │ ├── pages/ # 页面 │ │ └── widgets/ # 功能组件 │ ├── daily/ # 随记 │ │ ├── data/models/ │ │ └── presentation/ │ ├── asset/ # 资产管理 │ │ ├── data/models/ │ │ └── presentation/ │ ├── password/ # 密码管理 │ │ ├── data/models/ │ │ └── presentation/ │ └── profile/ # 个人中心 │ ├── data/models/ │ └── presentation/ └── main.dart # 应用入口

安装和运行

前置要求

  • Flutter SDK 3.0+
  • Dart SDK 3.0+

安装步骤

  1. 克隆项目
git clone <repository-url> cd keji_app
  1. 安装依赖
flutter pub get
  1. 生成 Isar 适配器
dart run build_runner build --delete-conflicting-outputs
  1. 运行应用
flutter run

快速运行脚本

项目提供了便捷脚本:

# 安装依赖并运行应用 ./scripts/run.sh # 构建 APK(发布版) ./scripts/build-apk.sh --release # 构建 APK(调试版) ./scripts/build-apk.sh --debug

应用初始化

应用启动时会自动初始化必要的资源:

  • Isar 数据库
  • 应用数据目录
  • 图片存储目录
  • 备份文件目录

首次开发时,需要确保资源文件存在:

# 开发环境初始化(创建缺失的资源文件) dart run scripts/setup.dart

环境变量配置

创建 .env 文件并配置:

# 高德地图 API Key(用于位置服务,可选) AMAP_API_KEY=your_amap_api_key_here

云端开发环境运行到本地模拟器

在云端开发环境(如 CNB)开发时,可以通过 FRP 端口转发将 Flutter 应用运行到本地的安卓模拟器。

方案一:模拟器已暴露公网端口

如果模拟器已经通过公网暴露(如 <IP>:16384),直接连接即可:

# 连接远程模拟器 adb connect <IP>:16384 # 确认连接 adb devices # 运行 Flutter 应用 flutter run -d <IP>:16384

方案二:通过 FRP 转发本地模拟器

如果模拟器在本地,需要通过 FRP 转发到云端:

1. 确认本地模拟器 ADB 端口

以 MuMu 模拟器为例,默认端口为 16384:

# 连接 MuMu 模拟器确认端口可用 adb connect 127.0.0.1:16384 # 确认连接成功 adb devices

2. 配置 FRP

本地 frpc.toml:

serverAddr = "你的FRP服务器地址" serverPort = 7000 [[proxies]] name = "adb" type = "tcp" localIP = "127.0.0.1" localPort = 16384 remotePort = 16384

启动本地 frpc:

./frpc -c frpc.toml

3. 云端连接本地模拟器

在云开发环境中:

# 通过 FRP 连接到本地模拟器 adb connect 127.0.0.1:16384 # 确认设备已连接 adb devices # 运行 Flutter 应用 flutter run

MuMu 模拟器端口参考

模拟器版本默认 ADB 端口
MuMu 模拟器 1216384(多开实例依次递增)
MuMu 模拟器 Pro (Mac)16384
MuMu 模拟器 6/77555

注意事项

  • 网络延迟可能导致热重载较慢
  • ADB 连接断开后需要重新执行 adb connect
  • 确保防火墙允许相关端口通信

数据安全

所有敏感数据都经过AES-256加密存储:

  • 密码使用主密码派生的密钥加密
  • 支持生物识别快速解锁
  • 数据存储在本地设备上,不上传云端

开发规范

BLoC 模式

  • 每个功能模块包含独立的 Bloc
  • Event、State 分离定义
  • 状态类使用不可变对象

Isar 模型

  • 使用 @collection 注解定义模型
  • 每个模型有两个 ID:
    • Id id - Isar 内部使用的自动增量 ID(int)
    • String xxxId - 业务使用的字符串 ID
  • 修改模型后需运行 dart run build_runner build

代码风格

  • 遵循 Flutter 官方代码规范
  • 使用有意义的命名
  • 注释重要业务逻辑

代码生成

修改 Isar 模型后,需要重新生成适配器:

# 一次性生成 dart run build_runner build --delete-conflicting-outputs # 监听模式(开发时推荐) dart run build_runner watch --delete-conflicting-outputs

常用命令

# 运行静态分析 flutter analyze # 运行测试 flutter test # 格式化代码 dart format lib/ # 清理构建缓存 flutter clean # 升级依赖 flutter pub upgrade

待实现功能

  • 数据云同步
  • 密码导入/导出
  • 通知提醒完善
  • 统计图表展示
  • 多语言支持
  • 深色模式主题优化

贡献指南

欢迎提交 Issue 和 Pull Request!

许可证

MIT License

作者

可记开发团队