我构建了一个全栈 Flutter 费用分摊 App——学到了什么
来源:dev.to — 2026-08-21
📋 概述
作者投入数月业余时间,用 Flutter 打造了 Expenses Meet——一款已上架 Google Play 的协作式、离线优先的群组费用分摊与个人理财追踪应用。架构上采用 feature-first 目录 + BLoC 状态管理 + Freezed 不可变模型。最重要的架构决策是离线优先:所有数据先持久化在本地 Hive,联网后由 SyncService 与 Cloud Firestore 双向同步;最棘手的坑是首个同步实现会在写远端数据前清空本地 Hive,导致未同步的本地编辑在刷新时被销毁,修复方法是先 syncLocalToCloud() 再 syncCloudToLocal(),并在下载后恢复待同步项。
🔑 核心要点
- 离线优先是核心架构决策:数据先落本地 Hive,联网后 SyncService 与 Cloud Firestore 双向同步。
- 最痛的坑:首个同步实现在写远端前先清空本地 Hive,导致未同步的本地编辑在刷新时被销毁。
- 修复:先 syncLocalToCloud() 抢救待同步项,再 syncCloudToLocal() 下载,最后恢复本地改动。
- 技术栈为 feature-first 目录 + flutter_bloc + Freezed(不可变模型、copyWith、Hive 适配器)。
💡 金句
先同步本地到云端、再同步云端到本地,恢复待同步项后再下载——事后看显然,调试时真要命。
👍 0
👎 0
← 返回 dev.to 首页