getImageFile method
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);
}