Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart Flatter CachedNetworkImageProvider-错误时如何显示本地默认图像?_Dart_Flutter - Fatal编程技术网

Dart Flatter 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

如果CachedNetworkImageProvider由于某些原因无法获取远程映像,我希望显示默认的本地映像:

容器(
宽度: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类型