resolve method
Resolves this Picture provider using the given configuration
, returning
an PictureStream.
This is the public entry-point of the PictureProvider class hierarchy.
Subclasses should implement obtainKey and load, which are used by this method.
Implementation
PictureStream resolve(PictureConfiguration picture,
{PictureErrorListener? onError}) {
// ignore: unnecessary_null_comparison
assert(picture != null);
final PictureStream stream = PictureStream();
T? obtainedKey;
obtainKey(picture).then<void>(
(T key) {
obtainedKey = key;
stream.setCompleter(
cache.putIfAbsent(
key!,
() => load(key, onError: onError),
),
);
},
).catchError((Object exception, StackTrace stack) async {
if (onError != null) {
onError(exception, stack);
return;
}
FlutterError.reportError(FlutterErrorDetails(
exception: exception,
stack: stack,
library: 'SVG',
context: ErrorDescription('while resolving a picture'),
silent: true, // could be a network error or whatnot
informationCollector: () sync* {
yield DiagnosticsProperty<PictureProvider>(
'Picture provider', this);
yield DiagnosticsProperty<T>('Picture key', obtainedKey,
defaultValue: null);
}));
});
return stream;
}