我尝试从api加载图片, 当我从flutter或CachedNetworkImage插件中使用NetworkImage时,应用frezee并停止处理此错误
I /颤振(314):IM图像资源服务引起的异常提示 ╞═════════════════════════════════════════════════ ═══我/颤振( 314):抛出以下_Exception来解析图像编解码器: I / flutter(314):异常:HTTP请求失败,statusCode:308, I / flutter(314):http://example.com/image/sample.jpg
代码示例:
CachedNetworkImage(
height: MediaQuery.of(context).size.width * 0.25,
width: MediaQuery.of(context).size.width * 0.25,
fit: BoxFit.cover,
placeholder: (context, url) => Image.asset(
"$assetsImages/loader_image.gif",
height:
MediaQuery.of(context).size.width * 0.25,
width: MediaQuery.of(context).size.width * 0.25,
),
errorWidget: (context, url, error) => Image.asset(
"$assetsImages/image_unavailable.jpg",
height:
MediaQuery.of(context).size.width * 0.25,
width: MediaQuery.of(context).size.width * 0.25,
),
imageUrl: restoImageUrl + value['filename'],
)
问题出现在imageUrl上:restoImageUrl + value ['filename'], 当我单击错误的链接图像时,它通常在浏览器中打开, 如何解决这个问题? 或如何使url 308永久重定向的抖动支持?
答案 0 :(得分:0)
您的api是否在浏览器上正常工作?
尝试使用占位符
FadeInImage.assetNetwork(
placeholder: "assets/images/logo.png",
image:
"$_url/nativeapi/v1.0/s3object/GetCompanyLogo?siteId=${widget.siteId}")
答案 1 :(得分:0)
直到20年9月仍然没有一个好的解决方案,您可以使用Flutter配置自己的Http模块并通过Image.network()
或NetworkImage()
传递它。
有一些库,但是它们更让您选择followRedirects: boolean
或添加headers: Map<String, String>
,因此您必须选择是否要进行身份验证或重定向功能。
就我而言,我是提供图像重定向的API的所有者。我意识到我正在使用PERMANENT_REDIRECT
(308),并且可以与Postman或浏览器正常工作,但是我所做的是将状态代码更改为MOVED_PERMANENTLY(301)。
现在就可以使用!