load method
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,
);
}