fromImageProvider static method

Future<ImageWrapper> fromImageProvider(
  1. ImageProvider<Object> provider
)

Implementation

static Future<ImageWrapper> fromImageProvider(painting.ImageProvider provider) async {
  final completer = Completer<ui.Image>();
  final configuration = ImageConfiguration(
      devicePixelRatio: WidgetsBinding.instance.window.devicePixelRatio);
  final imageStream = provider.resolve(configuration);

  final listener = ImageStreamListener(
          (image, synchronousCall) {
            var pictureRecorder = ui.PictureRecorder();
            Canvas canvas = Canvas(pictureRecorder);
            canvas.scale(1, -1);
            canvas.translate(0, -1.0 * image.image.height);
            canvas.drawImage(image.image, Offset.zero, Paint());
            completer.complete(pictureRecorder
                .endRecording()
                .toImage(image.image.width, image.image.height));
          },
      onError: completer.completeError);

  imageStream.addListener(listener);

  ui.Image image;
  try {
    image = await completer.future;
  } finally {
    imageStream.removeListener(listener);
  }

  try {
    return fromImage(image);
  } finally {
    image.dispose();
  }
}