首页项目技能关于AI 助手私人助手登录联系我
← 返回作品集

个人待办 · 本地记事日历 App

2026.10 - 至今·产品设计 + 独立开发FlutterDartRiverpoddrift(SQLite)HarmonyOSAES-256-GCM

项目截图 · 点击查看大图

问题

市面上的待办 App 普遍要注册账号、上云同步、塞广告和会员,而个人日程是高敏感数据,很多人只想要一个装在本机、断网也好用的记事工具。做这个产品最难的不是画界面,而是三件事同时成立:一是「本地优先」意味着没有服务端兜底,数据迁移与容灾全靠客户端自己设计——备份格式、加密与密钥派生、导入冲突策略都要在端内闭环,错了就没有「找回密码」这种退路;二是一套 Flutter 代码要同时落 Android / iOS / HarmonyOS 三端,而鸿蒙的 Flutter 生态与插件体系远不如前两者成熟,提醒通知这类强依赖系统能力的功能必须自己补原生通道;三是天气、AI 两个联网功能必须与核心数据严格隔离——默认不联网、任务库不进任何网络请求,关网后核心记事/日历/提醒/迁移功能完整可用。

方案

产品定位与边界

完全免费、无广告、无会员、无账号、无云同步,对标「macOS 日历 + 提醒事项」的轻量体验;软删除 + 30 天回收站、高风险操作二次确认、明文/加密备份自动识别,215 行需求文档把边界场景全部闭环。

架构分层

flutter_riverpod 状态管理 + drift(纯 Dart SQLite,三端行为一致,schemaVersion 2)本地库;42 个 Dart 文件约 1.8 万行、13 个页面,data / domain / providers / services / screens 分层清晰。

数据迁移

备份导出任务、子任务、图片附件、AI 对话记录与全部设置项;加密采用 pointycastle 纯 Dart 实现的 AES-256-GCM + PBKDF2 密钥派生(不依赖平台原生库,三端加密结果一致);导入支持明文/加密自动识别、版本兼容与冲突保护。

三端提醒

flutter_local_notifications + timezone 覆盖 Android / iOS;鸿蒙端插件无原生支持,自建 MethodChannel 通道对接鸿蒙 reminderAgentManager 代理提醒,通知能力三端对齐;无起止时间的任务以「创建时刻 + 提前量」为固定触发点,单任务最多 10 条独立提醒。

桌面小组件

Android 小组件 + iOS WidgetKit(App Group 数据通道),小组件点击经 app_links 解析 personal-todo://task/<id> 深链跳转,处理任务已删除、密码锁未验证等边界。

联网功能隔离

天气走 Open-Meteo,整月一次请求 + 本地缓存;AI 对话走 OpenAI 兼容协议,60 秒超时、单条 2000 字上限;网络设置页支持单项关闭与一键全关,离线时入口置灰不弹错。

工程化

scripts/build_all.sh 三端一键打包,产物落 dist/<platform>/,Dart 混淆符号表单独留存用于还原崩溃堆栈;flutter analyze 0 警告。

技术难点与解决方式

  • 任务列表查询后按行号回填子任务,列表一过滤就索引错位,子任务挂到错误任务上。→ 改为一次性按任务 ID 分组加载,从根上消除对行号的依赖。
  • 备份加密首次导出必抛异常:pointycastle 的 BlockCipher.init 第一个参数是 forEncryption,原实现把加密方向传反了。→ 修正参数并补加密导出/导入往返的单元测试,让这类底层方向性错误被测试拦住而不是上线后才发现。
  • 月视图天气逐日发请求,且天数计算写成 DateTime(y, m+1).day(恒为 1),整月只拉到 1 号的天气。→ 修复月份边界计算,并把逐日请求改为整月一次请求,流量与耗时同时下降一个数量级。
  • 备份导入原实现会用备份里的任务直接覆盖本机同 ID 任务,一次误导入等于本机数据被清。→ 改为备份任务生成新 ID 追加、本机数据一律保留;覆盖模式需二次确认,密码错误 3 次锁定 60 秒。
  • 鸿蒙端 flutter_local_notifications 无原生实现,提醒功能整块缺失。→ 自建 MethodChannel 原生通道对接 reminderAgentManager 代理提醒,让鸿蒙与 Android / iOS 提醒能力对齐。
  • 桌面小组件点击跳转要处理「任务已删」「锁未解」等边界,否则点了没反应或绕过隐私锁。→ app_links 统一解析深链,任务已删弹明确提示,密码锁未验证时先验证再进入。

成果

Android 端已实测产出 25MB release APK(v1.0.4+5)真机运行;30 个单元测试全部通过、flutter analyze 0 警告;iOS 与鸿蒙端代码与配置就绪(iOS 小组件 target、鸿蒙 MethodChannel 通道均已写完),待本机补齐完整 Xcode 与 DevEco Studio 工具链后打包验证。

有类似的需求?

我可以帮你评估工作量和技术方案,聊一聊不花钱。

联系我