// Taken from https://github.com/flutter/flutter/issues/26127#issuecomment-782083060 import 'dart:async'; import 'dart:ui'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; Future loadImage(ImageProvider provider) { final config = ImageConfiguration( bundle: rootBundle, devicePixelRatio: window.devicePixelRatio, platform: defaultTargetPlatform, ); final Completer completer = Completer(); final ImageStream stream = provider.resolve(config); late final ImageStreamListener listener; listener = ImageStreamListener((ImageInfo image, bool sync) { debugPrint("Image ${image.debugLabel} finished loading"); completer.complete(); stream.removeListener(listener); }, onError: (dynamic exception, StackTrace? stackTrace) { completer.complete(); stream.removeListener(listener); FlutterError.reportError(FlutterErrorDetails( context: ErrorDescription('image failed to load'), library: 'image resource service', exception: exception, stack: stackTrace, silent: true, )); }); stream.addListener(listener); return completer.future; }