fetchImages method

Future<Map<String, Uint8List>> fetchImages(
  1. List<String> urls
)

Implementation

Future<Map<String, Uint8List>> fetchImages(List<String> urls) async {
  if (urls.isEmpty) return {};
  if (enableCaching) await _fileCache.clearIfExpired();
  final Map<String, Uint8List> imageMap = {};
  const uuid = Uuid();
  for (var url in urls) {
    final source = _source.fetchImage(url);
    try {
      final key = uuid.v5(Uuid.NAMESPACE_URL, url);

      var data =
          enableCaching ? await _fileCache.objectFor(key) : imageMap[url];
      if (data != null) {
        imageMap[url] = data;
        continue;
      }
      final Result result = await _api.getRequest(source: source);

      if (result is Error) {
        throw Exception("Image API failed: $source");
      }
      final http.Response response = (result as Success).value;
      data = response.bodyBytes;
      imageMap[url] = data;
      if (enableCaching) _fileCache.setObject(data, key);
    } catch (e) {
      return imageMap;
    }
  }
  return imageMap;
}