首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在加载时加载图像和处理异常的正确方法是什么?

在加载时加载图像和处理异常的正确方法是什么?
EN

Stack Overflow用户
提问于 2020-10-02 09:55:59
回答 3查看 284关注 0票数 3

我想知道从设备加载图像的正确方式是什么,如果图像丢失或损坏,则处理异常。用户从设备中选择一个图像,我想打开它。我在后面的代码中使用了这个图像,所以仅仅在一些小部件中显示是不够的。目前,我使用的代码在大多数情况下运行良好:

代码语言:javascript
复制
  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;
  }

但是,如果图像丢失或损坏,控制台中会打印“图像资源服务捕获的异常”,但我的异常捕捉器在此函数之上没有得到异常。

  1. 是否正确加载图像,还是有更好的方法?如果代码正常,如何捕获异常,特别是丢失文件或损坏的图像?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-05 05:42:41

好问题!:)

您可以在下面使用更简单的代码,即按需要加载图像。

代码语言:javascript
复制
import 'dart:ui' as ui;

  Future<ui.Image> imageLoadFromDevice(String path) async {

    await askPermissionForStorage();

    File fileImage = File(path);
    final Uint8List imageUint8List =  await fileImage.readAsBytes();
    final ui.Codec codec = await ui.instantiateImageCodec(imageUint8List);
    final ui.FrameInfo frameInfo = await codec.getNextFrame();

    return frameInfo.image;
  }

要捕获此代码中的异常,可以将其放入try-catch中。加载图像时出现的任何异常,都应产生可捕获和处理的一般异常。

票数 0
EN

Stack Overflow用户

发布于 2020-10-02 10:01:17

我不确定损坏的图像,但在缺少文件的情况下,可以将File(path)存储在变量中,并在设置ImageProvider之前使用varname.exists()进行检查。

票数 0
EN

Stack Overflow用户

发布于 2022-09-02 16:51:45

若要处理来自ImageStream的错误,请使用onError argument to the ImageStreamListener constructor

代码语言:javascript
复制
imageProvider.resolve(ImageConfiguration()).addListener(ImageStreamListener(
  (ImageInfo info, bool _) { }, // called for success
  onError: (Object error, StackTrace? stackTrace) { }, // called for error
));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64169620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档