Flutter NetworkImage 处理 403 错误

Posted

技术标签:

【中文标题】Flutter NetworkImage 处理 403 错误【英文标题】:Flutter NetworkImage handle 403 error 【发布时间】:2019-01-13 02:37:31 【问题描述】:

在我的Flutter 移动应用程序中,通过NetworkImage() 加载用户的个人资料图片时,我收到了403 状态码作为响应。

如果出现 403 状态代码或图像 URL 损坏等情况,如何通过显示我的 assets 文件夹中的图像来处理此问题。

目前我已经通过向图像 URL 发送 HTTP GET 请求并检查 状态代码是否为 200 来处理它。如果是 200,我使用NetworkImage(),否则我使用AssetImage() 加载图像并使用FutureBuilder() 构建小部件。

虽然这很有效,但我觉得处理这么小的场景很麻烦,而且可以以我不知道的更好的方式完成。

处理这种情况的最佳方法是什么?

【问题讨论】:

您可以使用堆栈小部件并同时加载 AssetImage 和 NetworkImage。如果加载成功,NetworkImage 将显示在 AssetImage 的顶部。但这样一来,资产小部件无论如何都会加载。 这不适用于我的情况,它仍然会抛出异常,只是您不会注意到差异。我正在寻找类似加载错误的后备。如果我在只需要 1 张图片时加载 2 张图片,也会影响性能吗? 如果networkImage失败,它会抛出一个异常,这不是一场彻底的灾难!这个解决方案很简单,成本最低。但我同意你的看法。这感觉不对。看看这个:github.com/flutter/flutter/issues/6229 【参考方案1】:

这个场景你做的很简单,我没看出有什么问题:

  if (response.statusCode == 200) 
    return NetworkImage();
   else 
    return AssetImage();
  

【讨论】:

我不想在加载图像之前发送 GET 请求。这是我已经做过的。

以上是关于Flutter NetworkImage 处理 403 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用重定向 url 加载网络图像?

Flutter 默认图片占位符

如何在 Flutter 中创建网络图像列表

如何从我的 Flutter 应用程序控制网络缓存?

Flutter图片加载与缓存

父行的颤振列自动高度