【Flutter 问题系列第 84 篇】如何清除指定网络图片的缓存

这是【Flutter 问题系列第 84 篇】,如果觉得有用的话,欢迎关注专栏。

博文当前所用 Flutter SDK:3.24.3、Dart SDK:3.5.3,网络图片缓存用的插件 cached_network_image: 3.4.1,缓存的网络图像的存储和检索用的插件 flutter_cache_manager: 3.4.1

一:问题描述

针对相同网络图片的地址,通过缓存图片到本地的方式可以提升应用的使用感受。不过有时候会有根据条件触发清理所有缓存或者某张图片缓存的情况,如同一个 Url 根据条件返回不同的图片,如果之前本地已经缓存了图片 A,则 Url 不变的前提下对应的图片变成图片 B,此时再次启动应用看到的还是图片 A,这个时候怎么解决呢?

二:解决方案

在 CachedNetworkImage 的构造函数中有一个 cacheKey 的字段,意思是当前网络图片所对应的缓存标识 key,默认是可空 String 类型,如下图所示。

如果要清空当前图片的缓存的话肯定是根据此 cacheKey 来处理,所以我们需要先定义一个缓存的 key,如下代码所示

csharp 复制代码
import 'package:cached_network_image/cached_network_image.dart';

final String _cacheKey = 'AllenSu';

CachedNetworkImage(
  imageUrl: "https://xxx...",
  cacheKey: _cacheKey,
),

接下来就是如何根据 cacheKey 清空了,使用 flutter_cache_manager 的话很简单,一行代码搞定,如下所示

csharp 复制代码
import 'package:flutter_cache_manager/flutter_cache_manager.dart';

... do something ...
await DefaultCacheManager().removeFile(_cacheKey);

如果是清空所有图片缓存的话使用如下方式即可。

csharp 复制代码
await DefaultCacheManager().emptyCache();

ok,问题解决,在 Flutter 中如何清除指定网络图片的缓存便介绍到这里。

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。


结束语

Google 的 Flutter 越来越火,截止 2024年11月16日 GitHub 标星已达 166K,Flutter 毅然是一种趋势,所以作为前端开发者,没有理由不趁早去学习。

无论你是 Flutter 新手还是已经入门了,不妨先点个关注,后续我会将 Flutter 中的常用组件(含有源码分析、组件的用法及注意事项)以及可能遇到的问题写到 CSDN 博客中,希望自己学习的同时,也可以帮助更多的人。

相关推荐
sunly_4 小时前
Flutter:key的作用原理(LocalKey ,GlobalKey)
开发语言·javascript·flutter
极客先躯4 小时前
高级java每日一道面试题-2024年11月09日-缓存中间件篇-Redis和Memecache有什么区别?
java·缓存·中间件·每日一道面试题·高级java·缓存中间件篇
lexusv8ls600h4 小时前
你的服务器缓存中毒过么?
服务器·web安全·缓存
半夏知半秋4 小时前
lua-lru缓存算法解析
笔记·学习·算法·缓存·lua
张彦峰ZYF7 小时前
高并发场景下的热点key问题探析与应对策略
redis·分布式·缓存
二十七剑8 小时前
Redis与数据库关联小记
数据库·redis·缓存
AiFlutter8 小时前
Flutter-flutter_blue_plus打包后无法进行设备扫描
flutter
生命几十年3万天9 小时前
redis为什么快
数据库·redis·缓存
fifiAmx12 小时前
Flutter 扫描二维码
flutter