SuperAPI AI 工具集

flutter-caching-data

数据与分析

查看项目

更新于 10-16 05:47

技能介绍

用途:为 Flutter 应用实现缓存策略,提升性能并支持离线使用,适用于需要在本地保留数据以减少网络请求的场景。

主要能力与策略选择:小体量非关键 UI 状态或偏好用 shared_preferences;大型结构化数据用设备端数据库(sqflite、Drift、Hive CE、Isar);二进制或大媒体文件用 path_provider 做文件系统缓存;保留用户会话状态(导航、滚动位置)用 Flutter 内置状态恢复;优化 Android 启动可预热并缓存 FlutterEngine。

离线优先同步:以 Repository 作为唯一数据源,组合本地数据库与远程 API。读取用 Stream 先 yield 本地缓存,再拉取远程、更新本地并 yield 新数据;写入按数据关键性选择:在线优先先调 API 成功后再写本地,离线优先先写本地、API 失败则标记待同步。数据模型加 synchronized 布尔标记,用 workmanager 或 Timer 做后台同步。

持久化:文件缓存用 getApplicationDocumentsDirectory() 存持久数据、getTemporaryDirectory() 存可被系统清理的缓存;SQLite 用 sqflite,更新时用 whereArgs 防注入。

UI 优化:远程图片用 cached_network_image;自定义 ImageProvider 应重写 createStream() 与 resolveStreamForKey();大图需手动调大 ImageCache.maxByteSize 或自定义淘汰逻辑。滚动缓存用 scrollCacheExtent 与 ScrollCacheExtent 对象,不用已弃用的 cacheExtent/cacheExtentStyle。避免在 Widget 上重写 operator ==(会导致 O(N²)),优先 const 构造。

Android 引擎缓存:在 Application 中实例化并预热 FlutterEngine,存入 FlutterEngineCache,Activity/Fragment 用 withCachedEngine 取用;使用缓存引擎时无法通过构建器设置初始路由,需在执行 Dart 入口前于 navigationChannel 设置。

限制:资料未提供具体版本要求、性能数据或平台差异细节。