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

相关推荐
莫得感情 o9 小时前
Redis 05 · 持久化:RDB 与 AOF 怎么保证数据不丢
redis·缓存
curd_boy11 小时前
【Redis】Redis从缓存到AI向量平台
人工智能·redis·缓存
kiracrimson11 小时前
从缓存的角度看链表与线性表的差异
数据结构·链表·缓存
末代iOS程序员华仔14 小时前
iOS 5.6 条例解决方法
flutter·ios·swift
2601_9623010114 小时前
深入理解缓存(Cache):原理、应用与优化
缓存·计算机原理·优化策略·数据访问·系统性能
数智启示录15 小时前
PostgreSQL 计划缓存实战(第 10 篇):预编译 SQL 前五次都快,第六次为什么可能变慢
经验分享·sql·缓存·postgresql·面试
跨境数据猎手19 小时前
京东开放平台商品详情接口(jd.item_get):签名、缓存与批量采集
java·spring·缓存
xbgRS19 小时前
Redis基本概念及应用
redis·缓存
草莓熊Lotso19 小时前
【Redis 初阶】特殊数据类型、渐进式遍历与数据库操作生产指南
linux·网络·数据库·redis·tcp/ip·缓存·bootstrap
λqaq719 小时前
Redis 数据库基础:安装、5 大核心数据类型与常用命令
linux·数据库·redis·python·缓存