image method
Implementation
ui.Image? image(T obj) {
var key = (keySupplier == null) ? obj : keySupplier!(obj);
var image = _images[key];
if (image == null) {
if (!_images.containsKey(key)) {
_images[key] = null;
ImageProvider? imgProvider = imageProviderSupplier(obj);
if (imgProvider == null)
return null;
else {
Future<ui.Codec> Function(Uint8List,
{bool allowUpscaling, int? cacheHeight, int? cacheWidth}) decoder = (Uint8List bytes,
{bool? allowUpscaling, int? cacheWidth, int? cacheHeight}) =>
PaintingBinding.instance!
.instantiateImageCodec(bytes, cacheWidth: cacheWidth, cacheHeight: cacheHeight);
// When an exception is caught resolving an image, no completers are
// cached and `null` is returned instead of a new completer.
final ImageStreamCompleter? completer = PaintingBinding.instance!.imageCache!.putIfAbsent(
// ignore: invalid_use_of_protected_member
imgProvider,
// ignore: invalid_use_of_protected_member
() => imgProvider.load(imgProvider, decoder),
onError: null,
)!;
if (completer != null) {
ImageListener onImage = (ImageInfo image, bool synchronousCall) {
_onImage(image, obj, key);
};
ImageStreamListener listener = ImageStreamListener(onImage);
completer.addListener(listener);
}
}
}
}
return image;
}