flutter - Image.network() 失败时无法捕获 NetworkImageLoadException
问题描述
我使用 Image.network() 从 URL 显示图像这是我使用它的方式
Image image = Image.network(
_auth.currentUser!.photoURL!,
width: 100.getWidth(context),
height: 100.getWidth(context),
frameBuilder: (context, child, frame, wasSynchronouslyLoaded) {
return wasSynchronouslyLoaded
? child
: _profileImagePlaceholder(context);
},
loadingBuilder: (context, child, loadingProgress) {
return loadingProgress == null
? child
: _profileImagePlaceholder(context);
},
errorBuilder: (context, error, stackTrace) {
return _profileImagePlaceholder(context);
},
);
但即使我设置了 errorBuilder 甚至用 try/catch 包装了整个东西这NetworkImageLoadException
仍然显示
完全例外
The following NetworkImageLoadException was thrown resolving an image codec:
HTTP request failed, statusCode: 403,
When the exception was thrown, this was the stack:
#0 NetworkImage._loadAsync (package:flutter/src/painting/_network_image_io.dart:99:9)
<asynchronous suspension>
...
Image provider:
NetworkImage("https://firebasestorage.googleapis.com/v0/b/biddee-co.appspot.com/o/profiles%2FdefaultProfile.png?alt=media&token=a4a99031-aabd-4597-b075-77ecb2d3e594",
scale: 1.0)
Image key:
NetworkImage("https://firebasestorage.googleapis.com/v0/b/biddee-co.appspot.com/o/profiles%2FdefaultProfile.png?alt=media&token=a4a99031-aabd-4597-b075-77ecb2d3e594",
scale: 1.0)
解决方案
您可以为此使用 ErrorBuilder
Image.network('Your image url...',
errorBuilder: (BuildContext context, Object exception, StackTrace stackTrace) {
return Text('Error');
},
),
从这里查找文档
推荐阅读
- amazon-web-services - 可选的 FilterExpression AWS
- php - PHP替换字符串的一部分并将这些替换的部分作为单独的字符串
- c# - C# ADO.NET 在外键之前写入主键
- sql-server - 使用两个表作为参考在 SQL 中计算值
- android - Android NDK 编译 Telegram 项目失败
- c# - Html.Encode class not encoding ≥ or ≤ characters
- azure-cosmosdb-sqlapi - 在 CosmosDB 中使用单个字符串值进行 ARRAY_CONTAINS 查询
- regex - Powershell RegEx 匹配索引始终相同
- javascript - 根据选中/未选中复选框隐藏/显示表格
- python-3.x - 谷歌堆栈驱动程序调试在 Kubernetes 中不起作用