Flutter 2版本pub.dev无适配cache包 如何处理缓存及替换CacheClient
你遇到的找不到适配Flutter2的cache包问题,本质是因为示例里的package:cache/cache.dart不是pub.dev上的公开第三方包,是Bloc官方教程示例项目中自行封装的本地轻量缓存类,所以你直接自己实现对应逻辑即可,不需要找第三方适配包,有两种可行方案:
方案1:自实现轻量CacheClient(无第三方依赖,完全兼容原示例逻辑)
这是成本最低的解决方案,你只需要在项目中新建cache_client.dart文件,拷贝以下代码,和原示例的CacheClient逻辑完全对齐,不需要修改其他业务代码:
import 'package:meta/meta.dart'; /// 内存缓存客户端,和原教程逻辑完全一致 class CacheClient { CacheClient() : _cache = <String, Object?>{}; final Map<String, Object?> _cache; /// 写入缓存 void write<T extends Object?>({required String key, required T value}) { _cache[key] = value; } /// 读取缓存 T? read<T extends Object?>({required String key}) { return _cache[key] as T?; } /// 删除指定key的缓存 void delete({required String key}) { _cache.remove(key); } /// 清空全部缓存 void clear() { _cache.clear(); } }
修改原有代码的两个点即可:
- 删掉原代码中的
import 'package:cache/cache.dart'; - 替换为你新建的
cache_client.dart的导入路径,比如import 'package:你的项目名/utils/cache_client.dart';
其余业务逻辑完全不需要改动,原有对_cache的读写调用都可以正常运行。
方案2:替换为持久化缓存(适配Flutter 2空安全)
如果你需要缓存数据持久化到本地,APP重启后缓存不丢失,可以使用Flutter官方维护的shared_preferences 2.x版本,该版本完全适配Flutter 2:
- 在
pubspec.yaml中添加依赖:
dependencies: shared_preferences: ^2.2.2
- 修改
AuthenticationRepository的缓存逻辑:
删掉原有的CacheClient相关声明和初始化,替换为SharedPreferences实例注入,原有的读写逻辑对应替换为shared_preferences的getString/setString等API即可。
内容的提问来源于stack exchange,提问作者Lars
相关产品推荐
相关产品推荐

