mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-09 00:07:49 -06:00
39 lines
1.2 KiB
Dart
39 lines
1.2 KiB
Dart
// 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<void> loadImage(ImageProvider provider) {
|
|
final config = ImageConfiguration(
|
|
bundle: rootBundle,
|
|
devicePixelRatio: window.devicePixelRatio,
|
|
platform: defaultTargetPlatform,
|
|
);
|
|
final Completer<void> 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;
|
|
}
|