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

相关推荐
唐诺8 小时前
Flutter Pigeon 跨端通信实战指南
flutter·pigeon
浮江雾8 小时前
Flutter第十七节-----路由管理(3)
android·开发语言·前端·javascript·flutter·入门
Y3815326629 小时前
SERP API + Redis 缓存层:4 种方案对比与选型
数据库·redis·缓存
程序员老刘11 小时前
Flutter版本选择指南:3.44密集修BUG,9月大限将至 | 2026年7月
flutter·ai编程·客户端
海兰11 小时前
【高速缓存】RedisVL 高级查询(全文搜索、混合搜索和 多向量搜索)
数据库·人工智能·redis·缓存
恋猫de小郭14 小时前
Flutter 3D 渲染的全新选择和应用场景
android·前端·flutter
敲代码日常15 小时前
不会Flutter,怎么做服药提醒APP
flutter
流星白龙1 天前
【Redis】4.基本全局命令
数据库·redis·缓存
流星白龙1 天前
【Redis】3.Redis安装与命令行客户端
数据库·redis·缓存
我不想名字重复1 天前
redis缓存和数据库数据保持一致
数据库·redis·缓存