resolve method

ImageStream resolve (ImageConfiguration configuration)

Resolves this image provider using the given configuration, returning an ImageStream.

This is the public entry-point of the ImageProvider class hierarchy.

Subclasses should implement obtainKey and load, which are used by this method.

Implementation

ImageStream resolve(ImageConfiguration configuration) {
  assert(configuration != null);
  final ImageStream stream = ImageStream();
  T obtainedKey;
  obtainKey(configuration).then<void>((T key) {
    obtainedKey = key;
    stream.setCompleter(PaintingBinding.instance.imageCache.putIfAbsent(key, () => load(key)));
  }).catchError(
    (dynamic exception, StackTrace stack) async {
      FlutterError.reportError(FlutterErrorDetails(
        exception: exception,
        stack: stack,
        library: 'services library',
        context: 'while resolving an image',
        silent: true, // could be a network error or whatnot
        informationCollector: (StringBuffer information) {
          information.writeln('Image provider: $this');
          information.writeln('Image configuration: $configuration');
          if (obtainedKey != null)
            information.writeln('Image key: $obtainedKey');
        }
      ));
      return null;
    }
  );
  return stream;
}