load method

  1. @override
ImageStreamCompleter load(
  1. _PlatformImageKey key,
  2. dynamic decode
)

Implementation

@override
ImageStreamCompleter load(_PlatformImageKey key, DecoderCallback decode) {
  Future<Map?> loadInfo = _channel.invokeMethod('loadImage', {
    'module': 'ImageLoader',
    'key': key.key,
    'imageQuality': key.quality,
    //'maxWidth': key.configuration?.size?.width,
    //'maxHeight': key.configuration?.size?.height,
  });
  Completer<Uint8List> bytesCompleter = Completer<Uint8List>();
  Completer<double> scaleCompleter = Completer<double>();
  loadInfo.then((map) {
    if (bytesCompleter.isCompleted) return;
    if (map != null || map!["scale"] != null || map["data"] != null) {
      scaleCompleter.complete(map["scale"] as double?);
      bytesCompleter.complete(map["data"] as Uint8List?);
    } else {
      bytesCompleter.completeError("Load image named '${key.key}' error");
    }
  });
  return _FutureImageStreamCompleter(
    codec: bytesCompleter.future.then((Uint8List bytes) {
      return decode(bytes);
    }),
    futureScale: scaleCompleter.future,
  );
}