cacheFile method
Implementation
Future<File?> cacheFile(
String id, {
ImageSize size = ImageSize.md,
void Function(int, int)? receiveCallback,
}) async {
if (kIsWeb) {
throw Exception("not support cache file in web");
}
FileInfo? info = await cacheFileInfo(id);
if (info == null) {
return null;
}
Directory dir = await getApplicationCacheDirectory();
var pathfile = "${dir.path}/${_id(id, size)}";
final file = File(pathfile);
if (await file.exists() && await file.length() > 0) {
_cachedFiles[_id(id, size)] = pathfile;
return file;
}
var tmpFile = "$pathfile.tmp";
try {
await fileManager.download(
info.accessUrl!,
tmpFile,
receiveCallback: receiveCallback,
imageSize: size,
);
var r = File(tmpFile).renameSync(pathfile);
_cachedFiles[_id(id, size)] = r.path;
return r;
} catch (e) {
await uncacheFileInfo(id);
if (kDebugMode) {
print(e);
}
return null;
}
}