SuperAPI AI 工具集

flutter-working-with-databases

数据与分析

查看项目

更新于 10-16 08:47

技能介绍

用途:在 Flutter 应用中管理本地数据持久化,使用 SQLite 或其他数据库方案存储、查询、同步大量结构化数据。

主要能力与做法: 架构:将数据层作为应用数据的单一事实来源(SSOT),在 MVVM 中对应 Model 层,禁止在此层之外更新应用数据。数据层分为仓库(Repository)与服务(Service)两部分。仓库是某领域实体的 SSOT,包含数据变更、轮询、缓存与离线同步的业务逻辑,并把原始数据模型转换为领域模型;服务是无状态的外部数据源包装(HTTP 客户端、SQLite、平台插件),只做基本 JSON 序列化,不做业务逻辑。

SQLite 服务:在 pubspec.yaml 添加 sqflite 与 path 包;用 path 定义安全的磁盘存储位置;用常量定义表结构;主键 id 使用 AUTOINCREMENT;SQL 查询始终使用 whereArgs 防止注入,例如 where: 'id = ?', whereArgs: [id]。

API 服务:把 HTTP 调用包装在专用客户端类中,返回异步对象(Future 或 Stream),在本层处理 JSON 序列化并返回 API 专用模型。

离线优先同步:读取时返回 Stream,先产出本地缓存数据,再发起网络请求、更新本地数据库并产出新数据;在线写入先调用 API 成功后再更新本地;离线优先写入则先更新本地,网络失败时把记录标记为 synchronized: false 并排队后台同步任务。

缓存策略:小型键值数据用 shared_preferences;大数据集用关系型(sqflite、drift)或非关系型(hive_ce、isar_community)本地数据库;图片用 cached_network_image;API 响应用内存映射或临时文件做轻量远程缓存。

工作流:新增数据实体时依次定义领域模型与 API/DB 模型,创建或更新服务,创建仓库抽象类并实现仓库(注入服务为私有依赖),在仓库内映射模型,向 ViewModel 暴露仓库方法,最后运行校验器修复错误。实现 SQLite 持久化时添加依赖、定义常量、在 onCreate/onUpgrade 中执行建表语句、实现增删改查、把服务注入仓库并确保查询前调用 database.open()。

限制:资料未提供具体安装命令、版本要求、性能指标或收费信息。