You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CachedNetworkImage断网无缓存时报错,需实现仅缓存命中时显示图片

解决方案

要实现「有缓存显示图片,无缓存显示文本」的需求,你可以借助CachedNetworkImage依赖的缓存管理器提前检查缓存状态,结合FutureBuilder动态渲染内容:

  1. 确保导入相关包:
import 'package:cached_network_image/cached_network_image.dart';
  1. 用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:35:49