mcpField
F
flutter-isar

flutter-isar

github.com/dhruvanbhalara数据与数据库30149 次安装8 周前更新
代码仓库

关于 flutter-isar

面向 Flutter 应用的 Isar 本地结构化数据存储指南,涵盖模式设计、仓库分层、迁移、响应式查询和离线优先数据流。

主要功能

  1. 01Isar 集合与索引设计
  2. 02通过仓库封装本地数据访问
  3. 03数据库模式迁移指导
  4. 04离线优先读写模式
  5. 05响应式查询流
  6. 06敏感数据存储指导

适用场景

  1. 01在本地持久化结构化应用数据
  2. 02刷新期间显示缓存数据
  3. 03异步同步本地写入
  4. 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