如何在 CachedNetworkImage flutter 中清除缓存

新手上路,请多包涵

我不想将图像存储在缓存中..我使用 CachedNetworkImage 进行图像加载..我想知道是否有任何选项可以像毕加索一样删除或不将图像存储在缓存中..

我的代码:

 var annotatedImg = CachedNetworkImage(
      fit: BoxFit.fill,
      imageUrl: Constants.IMAGE_BASE_URL + widget._fileId + Constants.CONTOUR_IMG_SUFFIX,
      placeholder: (context, url) => progressBar,
      errorWidget: (context, url, error) => new Icon(Icons.error),
    );

我试过了

annotatedImg.cacheManager.emptyCache();

但它的节目不能调用 emptyCache 是空的..

原文由 Navin Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

首先将包(flutter_cache_manager)添加到 pubspec.yaml 文件中,如下所示:

依赖项:颤振:sdk:颤振 _flutter_cache_manager:^1.1.3_

一天后,我找到了解决方案。通过调用 emptyCache() 方法使用 DefaultCacheManager 对象,这会清除缓存数据。

 DefaultCacheManager manager = new DefaultCacheManager();
manager.emptyCache(); //clears all data in cache.

原文由 Navin Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

自 CachedNetworkImage version 2.3 以来,所有这些解决方案 都不起作用,因为它在 2 个不同的地方缓存图像(DefaultCacheManager 和 NetworkImageProvider)

所以唯一的解决方案是使用 evictFromCache 内置方法 CachedNetworkImage

像这样:

 Future _deleteImageFromCache() async {
    String url = "your url";
    await CachedNetworkImage.evictFromCache(url);
  }

evictFromCache 是一个静态方法,所以它不需要在你的小部件树中有 CachedNetworkImage ,你可以直接从任何地方使用它。

原文由 Abdelazeem Kuratem 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题