【发布时间】:2020-10-02 09:55:59
【问题描述】:
我想知道从设备加载图像的正确方法是什么,并在图像丢失或损坏时处理异常。用户从设备中选择图像,我想打开它。我稍后会在我的代码中使用该图像,因此仅在某些小部件中显示它是不够的。 目前,我使用的以下代码在大多数情况下都能正常工作:
Future<ui.Image> imageLoadFromDevice(String path) async {
await askPermissionForStorage();
ImageProvider imageProvider = FileImage ( File ( path ), scale: 1 );
Completer<ImageInfo> completer = Completer();
imageProvider.resolve(ImageConfiguration()).addListener(ImageStreamListener((ImageInfo info, bool _) {
completer.complete(info);
}));
ImageInfo imageInfo = await completer.future;
return imageInfo.image;
}
但是如果图像丢失或损坏,控制台中会打印“图像资源服务捕获的异常”,但我在此函数上方的异常捕获器没有收到异常。
- 我是否可以正确加载图像,还是有更好的方法?
- 如果此代码正常,我应该如何捕获异常,尤其是丢失的文件或损坏的图像?
【问题讨论】:
标签: flutter