getImageWHE static method

Future<Rect> getImageWHE({
  1. Image? image,
  2. required String url,
  3. required String localUrl,
  4. required String package,
})

get image width height, load error throw exception.(unit px) 获取图片宽高,加载错误会抛出异常.(单位 px) image url network local url (full path/全路径,example:"assets/images/ali_connors.png",""assets/images/3.0x/ali_connors.png"" ); package

Implementation

static Future<Rect> getImageWHE(
    {Image? image,
    required String url,
    required String localUrl,
    required String package}) {
  if (ObjectUtils.isEmpty(image) &&
      ObjectUtils.isEmpty(url) &&
      ObjectUtils.isEmpty(localUrl)) {
    return Future.error("image is null.");
  }
  Completer<Rect> completer = Completer<Rect>();
  Image img = image != null
      ? image
      : ((url != null && url.isNotEmpty)
          ? Image.network(url)
          : Image.asset(localUrl, package: package));
  img.image
      .resolve(const ImageConfiguration())
      .addListener(ImageStreamListener(
        (ImageInfo info, bool _) {
          completer.complete(Rect.fromLTWH(0, 0, info.image.width.toDouble(),
              info.image.height.toDouble()));
        },
        onError: (Object exception, StackTrace? stackTrace) {
          completer.completeError(exception, stackTrace);
        },
      ));

  return completer.future;
}