您现在的位置是:首页 >其他 >flutter 获取网络图片的尺寸网站首页其他

flutter 获取网络图片的尺寸

肥肥呀呀呀 2025-07-26 00:01:03
简介flutter 获取网络图片的尺寸

 获取网络图片的尺寸

import 'dart:async';

import 'package:flutter/widgets.dart';


/// Image Util.
class ImageUtil {
  late ImageStreamListener _listener;
  late ImageStream _imageStream;

  /// get image width height,load error throw exception.(unit px)
  /// 获取图片宽高,加载错误会抛出异常.(单位 px)
  /// image
  /// url network
  /// local url , package
  Future<Rect> getImageWH({
    Image? image,
    String? url,
    String? localUrl,
    String? package,
    ImageConfiguration? configuration,
  }) {
    Completer<Rect> completer = Completer<Rect>();
    _listener = ImageStreamListener(
      (ImageInfo info, bool synchronousCall) {
        _imageStream.removeListener(_listener);
        if (!completer.isCompleted) {
          completer.complete(Rect.fromLTWH(
              0, 0, info.image.width.toDouble(), info.image.height.toDouble()));
        }
      },
      onError: (dynamic exception, StackTrace? stackTrace) {
        _imageStream.removeListener(_listener);
        if (!completer.isCompleted) {
          completer.completeError(exception, stackTrace);
        }
      },
    );

    if (image == null &&
        (url == null || url.isEmpty) &&
        (localUrl == null || localUrl.isEmpty)) {
      return Future.value(Rect.zero);
    }
    Image? img = image;
    if (img == null) {
      img = (url != null && url.isNotEmpty)
          ? Image.network(url)
          : Image.asset(localUrl!, package: package);
    }
    _imageStream = img.image.resolve(configuration ?? ImageConfiguration());
    _imageStream.addListener(_listener);
    return completer.future;
  }
}

使用

Rect rect = await ImageUtil().getImageWH(url:"网络图片");

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。