getImageFile method

Stream<FileResponse> getImageFile(
  1. String url, {
  2. String? key,
  3. Map<String, String>? headers,
  4. bool withProgress = false,
  5. int? maxHeight,
  6. int? maxWidth,
})

Implementation

Stream<FileResponse> getImageFile(
  String url, {
  String? key,
  Map<String, String>? headers,
  bool withProgress = false,
  int? maxHeight,
  int? maxWidth,
}) async* {
  if (maxHeight == null && maxWidth == null) {
    yield* getFileStream(url,
        key: key, headers: headers, withProgress: withProgress);
    return;
  }
  key ??= url;
  var resizedKey = 'resized';
  if (maxWidth != null) resizedKey += '_w$maxWidth';
  if (maxHeight != null) resizedKey += '_h$maxHeight';
  resizedKey += '_$key';

  var fromCache = await getFileFromCache(resizedKey);
  if (fromCache != null) {
    yield fromCache;
    if (fromCache.validTill.isAfter(DateTime.now())) {
      return;
    }
    withProgress = false;
  }
  if (!_runningResizes.containsKey(resizedKey)) {
    _runningResizes[resizedKey] = _fetchedResizedFile(
      url,
      key,
      resizedKey,
      headers,
      withProgress,
      maxWidth: maxWidth,
      maxHeight: maxHeight,
    );
  }
  yield* _runningResizes[resizedKey]!;
  _runningResizes.remove(resizedKey);
}