mirror of
https://github.com/ente-io/ente.git
synced 2025-05-27 13:09:56 +00:00
44 lines
1.2 KiB
Dart
44 lines
1.2 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter/painting.dart';
|
|
import 'package:flutter/services.dart';
|
|
|
|
class PreloadImage {
|
|
static Future<void> loadImage(ImageProvider provider) {
|
|
final config = ImageConfiguration(
|
|
bundle: rootBundle,
|
|
devicePixelRatio: 1,
|
|
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;
|
|
}
|
|
}
|