【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 博客中,希望自己学习的同时,也可以帮助更多的人。

相关推荐
张风捷特烈20 小时前
Flutter 伪3D绘制#03 | 轴测投影原理分析
android·flutter·canvas
马拉萨的春天1 天前
flutter 项目结构目录以及pubspec.ymal等文件描述
flutter
Y第五个季节1 天前
Redis - HyperLogLog
数据库·redis·缓存
Justice link1 天前
企业级NoSql数据库Redis集群
数据库·redis·缓存
〆、风神1 天前
Guava Cache 实战:构建高并发场景下的字典数据缓存
缓存·guava
极客天成ScaleFlash1 天前
极客天成NVFile:无缓存直击存储性能天花板,重新定义AI时代并行存储新范式
人工智能·缓存
morris1312 天前
【redis】redis实现分布式锁
数据库·redis·缓存·分布式锁
bst@微胖子2 天前
Flutter项目之登录注册功能实现
开发语言·javascript·flutter
纪元A梦2 天前
Redis最佳实践——首页推荐与商品列表缓存详解
数据库·redis·缓存
小墙程序员2 天前
Flutter 教程(十一)多语言支持
flutter