handelImageProvider method

Future<void> handelImageProvider({
  1. void onImage(
    1. Image
    )?,
  2. _ImageResolverResult? imageResolverResult,
})

Implementation

Future<void> handelImageProvider({
  final void Function(ui.Image)? onImage,
  final _ImageResolverResult? imageResolverResult,
}) async {
  late final _ImageResolverResult? result;
  if (imageResolverResult == null) {
    _ImageDecoder.schedule(
      bytes: imageInfo.imageBytes!,
      completer: completer,
    );

    result = await completer.future;
  } else {
    result = imageResolverResult;
  }

  if (result == null) return;

  if (onImage != null) {
    onImage(result.image);
  } else {
    imageInfo = imageInfo.copyWith(
      width: result.image.width,
      height: result.image.height,
    );
  }

  // don't resize animated images
  if (result.isAnimated) {
    isAnimatedImage = true;
    return _handelAnimatedImage(result.codec!, image: result.image);
  }

  state.uiImages.putIfAbsent('', () => result!.image);

  if (providerArguments.resizeImage) {
    return addResizedImage(
      uiImageSizeKey(
        providerArguments.widgetWidth,
        providerArguments.widgetHeight,
      ),
      providerArguments.widgetWidth,
      providerArguments.widgetHeight,
    );
  }

  state = state.copyWith(
    isLoading: false,
    height: result.image.height,
    width: result.image.width,
  );
}