saveImage static method

Future<String?> saveImage(
  1. String key,
  2. ImageProvider<Object> provider, {
  3. ImageConfiguration configuration = ImageConfiguration.empty,
})

Encodes provider as a PNG in shared storage and returns its path.

Implementation

static Future<String?> saveImage(
  String key,
  ImageProvider provider, {
  ImageConfiguration configuration = ImageConfiguration.empty,
}) async {
  final completer = Completer<ui.Image>();
  final stream = provider.resolve(configuration);
  late final ImageStreamListener listener;
  listener = ImageStreamListener((info, _) {
    stream.removeListener(listener);
    completer.complete(info.image);
  }, onError: (error, stack) {
    stream.removeListener(listener);
    completer.completeError(error, stack);
  });
  stream.addListener(listener);

  final image = await completer.future;
  final data = await image.toByteData(format: ui.ImageByteFormat.png);
  if (data == null) return null;
  return saveFile(key, data.buffer.asUint8List());
}