loadImage function
Loads an image from either a local asset path or a network URL.
Implementation
Future<ui.Image> loadImage(String path) async {
ImageProvider provider;
if (path.startsWith('http')) {
provider = NetworkImage(path);
} else {
provider = AssetImage(path);
}
final Completer<ui.Image> completer = Completer<ui.Image>();
final ImageStream stream = provider.resolve(ImageConfiguration.empty);
ImageStreamListener? listener;
listener = ImageStreamListener(
(ImageInfo frame, bool synchronousCall) {
completer.complete(frame.image);
if (listener != null) stream.removeListener(listener);
},
onError: (Object exception, StackTrace? stackTrace) {
completer.completeError(exception, stackTrace);
if (listener != null) stream.removeListener(listener);
},
);
stream.addListener(listener);
return completer.future;
}