CachedNetworkImage断网无缓存时报错,需实现仅缓存命中时显示图片
解决方案
要实现「有缓存显示图片,无缓存显示文本」的需求,你可以借助CachedNetworkImage依赖的缓存管理器提前检查缓存状态,结合FutureBuilder动态渲染内容:
- 确保导入相关包:
import 'package:cached_network_image/cached_network_image.dart';
- 用
DefaultCacheManager检查缓存,搭配FutureBuilder实现逻辑:
FutureBuilder<FileInfo?>( future: DefaultCacheManager().getFileFromCache(widget.geocache.image), builder: (context, snapshot) { // 缓存存在时显示图片 if (snapshot.hasData && snapshot.data?.exists() == true) { return CachedNetworkImage( imageUrl: widget.geocache.image, errorWidget: (context, url, error) => Text("lol"), ); } // 无缓存时显示文本 return Text("无缓存图片"); }, )
补充说明
DefaultCacheManager().getFileFromCache()会异步检查指定URL的图片是否在本地有缓存,返回FileInfo?类型,通过exists()可确认缓存文件是否有效- 这种方式能提前拦截无缓存且无网络的场景,避免触发错误请求
内容的提问来源于stack exchange,提问作者Brent Selis
相关产品推荐
相关产品推荐

