You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:

  1. 在pubspec.yaml中添加依赖:
dependencies:
  shared_preferences: ^2.2.2
  1. 修改AuthenticationRepository的缓存逻辑:
    删掉原有的CacheClient相关声明和初始化,替换为SharedPreferences实例注入,原有的读写逻辑对应替换为shared_preferences的getString/setString等API即可。

内容的提问来源于stack exchange,提问作者Lars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:12:03