Flutter使用CachedNetworkImage报Invalid Argument红屏错误如何解决
报错原因
- 该报错是因为你使用的
cached_network_image3.0及以上版本,对错误回调的参数签名有严格校验要求,要求错误处理器必须接收至少1个Object类型的参数,或1个Object加1个Stacktrace类型的参数,你当前代码中存在不符合该要求的无参闭包被作为错误处理器传入,触发了校验。 - 少数情况下是全局
ErrorWidget.builder的参数签名不符合Flutter新版SDK要求,连带触发该报错。
解决方法
- 首先调整你贴出的图片加载代码,给所有回调参数明确指定类型,保证符合参数要求,修改后代码如下:
import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; Widget cachedNetworkImage(String mediaUrl) { return CachedNetworkImage( imageUrl: mediaUrl, fit: BoxFit.cover, placeholder: (BuildContext context, String url) => Padding( child: CircularProgressIndicator(), padding: EdgeInsets.all(20.0), ), errorWidget: (BuildContext context, String url, dynamic error) => Icon(Icons.error), ); }
- 若修改后仍报错,检查
pubspec.yaml中cached_network_image的版本,执行命令升级到最新稳定版:flutter pub upgrade cached_network_image - 若问题还存在,排查项目中所有全局错误处理配置,确保所有
onError回调都符合参数要求,没有无参闭包被作为错误处理器使用。
内容的提问来源于stack exchange,提问作者Tyler
相关产品推荐
相关产品推荐

