【发布时间】:2020-08-27 19:38:47
【问题描述】:
我正在使用颤振的 Image.file() 在我的应用程序中显示图像。我还使用 errorBuilder 来处理任何崩溃并向用户显示消息。
我在执行这些步骤时遇到问题。
- 加载有效的图片
- 将损坏的图像加载到同一个 Image.File() 小部件中
- 将原始好的图像加载回同一个 Image.File() 小部件
在传入损坏的照片(第 2 步)后,似乎每次文件更改都会导致显示错误生成器,而不是新的好图像。
如果我没有在第 2 步中传入损坏的照片,则照片会发生应有的变化。这是颤振 Image() 的错误,还是在它进入 errorBuilder 后我应该做些什么。
这是我目前的设置。
Image.file(
file,
fit: BoxFit.cover,
errorBuilder: (BuildContext context, Object exception, StackTrace stackTrace) {
print("Failed to initialise the file");
print(stackTrace);
// Once an error occurs it always goes in here
return Text("an error occurred");
},
);
在传入损坏文件时/之后,我收到的所有文件更改的实际错误是
Could not instantiate image codec.
更新
我写了一个 dartpad 来显示我遇到的问题。
https://dartpad.dev/98c2dacb481c088dfd2e5bee490f45ed
如果你点击
- 好形象
- 好形象2
- 好形象
- 好形象2
图像循环正确...有效。
如果您随后单击“损坏的图像”,它将尝试加载损坏的 jpeg 文件,错误生成器将触发。
如果您随后单击“良好图像”或“良好图像 2”,它们将不再构建,并且图像每次都卡在加载错误生成器...我怎样才能让它再次加载其中一个好图像?
如果我不清楚,请告诉我,我会添加更多信息:)
非常感谢
【问题讨论】:
-
我看不到全貌,难道不是因为你的组件的构建被多次调用了吗?
-
但是当我加载第三张图片时(这是一个很好的文件)它不应该进入错误生成器并且应该显示一个图片
-
我无法重现此问题。当我将三个 image.file 放在列中时它可以工作,你能发布你如何使用这个代码 sn-p 吗?它可能与树和关键问题有关。需要复制。
-
@chunhunghan 我在回答中添加了一个示例飞镖垫和一些说明。抱歉,我在第一个问题中不够清楚。非常感谢您这么快回复