关于 flutter-isar
面向 Flutter 应用的 Isar 本地结构化数据存储指南,涵盖模式设计、仓库分层、迁移、响应式查询和离线优先数据流。
主要功能
- 01Isar 集合与索引设计
- 02通过仓库封装本地数据访问
- 03数据库模式迁移指导
- 04离线优先读写模式
- 05响应式查询流
- 06敏感数据存储指导
适用场景
- 01在本地持久化结构化应用数据
- 02刷新期间显示缓存数据
- 03异步同步本地写入
- 04将数据库变更流式传递到界面
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dhruvanbhalara/ skills --skill flutter-isar安装后在 Claude Code 中输入/flutter-isar确认已加载。
详细介绍
Isar 数据库
- 使用 Isar 作为结构化数据持久化的主要本地数据库
- 使用
@collection注解定义集合,并包含Id字段 - 将集合定义放在相关功能的
data/local/目录中 - 修改集合后运行
dart run build_runner build --delete-conflicting-outputs
模式设计
- 保持集合专注:每个领域实体对应一个集合
- 对经常查询的字段使用
@Index注解 - 对枚举字段使用
@enumerated - 使用
Links和Backlinks表示集合之间的关系 - 绝不存储派生值或计算值:在领域层计算这些值
迁移
- Isar 会自动处理增量模式变更(新增字段、新增集合)
- 对于破坏性变更(字段重命名、字段移除),在仓库中编写迁移逻辑
- 为数据库模式设置版本号,并在应用启动时检查版本
本地数据的仓库模式
- 本地数据源封装所有 Isar
put、get、delete、watch调用 - 仓库负责协调远程数据源和本地数据源
- 仓库根据具体用例决定采用缓存优先还是网络优先策略
离线优先模式
- 缓存优先:先从 Isar 读取,在后台从网络获取数据,成功后更新 Isar
- 网络优先:先从网络获取数据,失败时回退到 Isar
- 延迟写入:立即写入 Isar,异步同步到服务端(将待处理的变更加入队列)
- 刷新期间始终立即显示缓存数据
响应式查询
- 使用 Isar 的
watchLazy()或watch()通过 BLoC 向 UI 推送变更流 - 在仓库中封装 Isar 监听流,并将其作为
Stream<List<DomainModel>>暴露 - 在 BLoC 的
close()方法中妥善取消流订阅
安全存储
- 使用
flutter_secure_storage存储敏感的键值数据(令牌、加密密钥) SharedPreferences仅用于非敏感的用户偏好设置(主题、区域设置、引导标记)- 绝不在
SharedPreferences或纯 Isar 中存储密码、令牌或机密信息
评论
支持 Markdown