Dart Flatter CachedNetworkImageProvider-错误时如何显示本地默认图像?
如果CachedNetworkImageProvider由于某些原因无法获取远程映像,我希望显示默认的本地映像:Dart Flatter CachedNetworkImageProvider-错误时如何显示本地默认图像?,dart,flutter,Dart,Flutter,如果CachedNetworkImageProvider由于某些原因无法获取远程映像,我希望显示默认的本地映像: 容器( 宽度:80.0, 身高:120.0, 装饰:新盒子装饰( 形状:BoxShape.rectangle, 图片:新装饰图片( fit:BoxFit.fill, 图像:新的CachedNetworkImageProvider(url), ), ), ),您可以使用带有errorWidget参数的插件,安装步骤将在链接中解释。这是it的一个示例实现: image: new C
容器(
宽度:80.0,
身高:120.0,
装饰:新盒子装饰(
形状:BoxShape.rectangle,
图片:新装饰图片(
fit:BoxFit.fill,
图像:新的CachedNetworkImageProvider(url),
),
),
),
您可以使用带有errorWidget
参数的插件,安装步骤将在链接中解释。这是it的一个示例实现:
image: new CachedNetworkImage(
imageUrl: "http://via.placeholder.com/350x150",
placeholder: new CircularProgressIndicator(),
errorWidget: new Image.assets('error.jpg'), // This is what you need
fit: BoxFit.fill,
fadeInCurve: Curves.easeIn ,
fadeInDuration: Duration(seconds: 2),
fadeOutCurve: Curves.easeOut,
fadeOutDuration: Duration(seconds: 2),
),
您可以注意到,它还具有其他功能,如占位符和动画,因此您将有更多的功能进行修补。您可以使用带有errorWidget
参数的插件,安装步骤在链接上进行了说明。这是it的一个示例实现:
image: new CachedNetworkImage(
imageUrl: "http://via.placeholder.com/350x150",
placeholder: new CircularProgressIndicator(),
errorWidget: new Image.assets('error.jpg'), // This is what you need
fit: BoxFit.fill,
fadeInCurve: Curves.easeIn ,
fadeInDuration: Duration(seconds: 2),
fadeOutCurve: Curves.easeOut,
fadeOutDuration: Duration(seconds: 2),
),
您可以注意到,它还具有其他功能,如占位符和动画,因此您将有更多的功能进行修补。@Abdullah Khan-我最终得出以下结论:
CachedNetworkImage(
imageUrl:url,
占位符:(上下文,url)=>CircularProgressIndicator(),
errorWidget:(上下文、url、错误)=>GestureDetector(
onTap:(){
setAvatar();
},
子:图标(
Icons.account_圈,
尺寸:100.0,
颜色:主题。背景。原色,
),
),
imageBuilder:(上下文,图像)=>英雄(
标签:“照片”,
儿童:手势检测器(
onTap:(){
Get.toNamed(Routes.FULLPHOTO,
论据:{
“url”:url,
“名称”:照片标题,
“idx”:0
});
},
孩子:圆环星(
背景图片:图片,,
半径:大小,
),
),
),
),
@Abdullah Khan-我的结局是:
CachedNetworkImage(
imageUrl:url,
占位符:(上下文,url)=>CircularProgressIndicator(),
errorWidget:(上下文、url、错误)=>GestureDetector(
onTap:(){
setAvatar();
},
子:图标(
Icons.account_圈,
尺寸:100.0,
颜色:主题。背景。原色,
),
),
imageBuilder:(上下文,图像)=>英雄(
标签:“照片”,
儿童:手势检测器(
onTap:(){
Get.toNamed(Routes.FULLPHOTO,
论据:{
“url”:url,
“名称”:照片标题,
“idx”:0
});
},
孩子:圆环星(
背景图片:图片,,
半径:大小,
),
),
),
),
@Kamlesh,类似这样的东西?:
容器(
边距:仅限边集(右:8,左:8,顶部:8,底部:8),
宽度:80,
身高:80,
装饰:盒子装饰(
//borderRadius:borderRadius.all(半径圆形(14)),
//颜色:Colors.blue.shade200,
图像:装饰图像(
适合:BoxFit.contain,
图像:CachedNetworkImageProvider(
ipath,
),
),
),
),
@Kamlesh,类似这样的东西?:
容器(
边距:仅限边集(右:8,左:8,顶部:8,底部:8),
宽度:80,
身高:80,
装饰:盒子装饰(
//borderRadius:borderRadius.all(半径圆形(14)),
//颜色:Colors.blue.shade200,
图像:装饰图像(
适合:BoxFit.contain,
图像:CachedNetworkImageProvider(
ipath,
),
),
),
),
谢谢你的回答,我的朋友。我已经试过了,问题是我想在一个容器中使用它,我可以控制它的形状(矩形或圆形)。BoxDecoration image不接受CachedNetworkImage,表示无法将参数类型“CachedNetworkImage”分配给参数类型“ImageProvider”。它只接受CachedNetworkImageProvider。你知道一种在小部件中使用CachedNetworkImage的方法吗?它允许你控制它的形状?据我所知,插件本身没有类似于border radius的属性。CachedNetworkImageProvider与普通ImageProvider没有区别。它只提供图像的元信息,不提供任何优化。所以,若您想优化图像的行为,我建议您使用CachedNetworkImage并将父容器替换为另一个小部件(例如ClipRect、ClipOval)。我希望这将对您有所帮助。@Jaime如果您找到任何解决方案,请共享它,以便帮助其他人。我需要将CachedNetworkImage输出为CachedNetworkImageProvider,因为容器装饰映像需要CachedNetworkImageProvider类型映像。请分享你的经验。非常感谢。用一个例子看看我的另一个答案。谢谢你的回答,我的朋友。我已经试过了,问题是我想在一个容器中使用它,我可以控制它的形状(矩形或圆形)。BoxDecoration image不接受CachedNetworkImage,表示无法将参数类型“CachedNetworkImage”分配给参数类型“ImageProvider”。它只接受CachedNetworkImageProvider。你知道一种在小部件中使用CachedNetworkImage的方法吗?它允许你控制它的形状?据我所知,插件本身没有类似于border radius的属性。CachedNetworkImageProvider与普通ImageProvider没有区别。它只提供图像的元信息,不提供任何优化。所以,若您想优化图像的行为,我建议您使用CachedNetworkImage并将父容器替换为另一个小部件(例如ClipRect、ClipOval)。我希望这将对您有所帮助。@Jaime如果您找到任何解决方案,请共享它,以便帮助其他人。我需要将CachedNetworkImage输出为CachedNetworkImageProvider,因为容器装饰映像需要CachedNetworkImageProvider类型映像。请分享你的经验。非常感谢。请用一个示例查看我的另一个答案我需要作为CachedNetworkImageProvider输出CachedNetworkImage,因为容器装饰图像需要CachedNetworkImageProvider类型