putFile method
Future<File>
putFile(
- String url,
- Uint8List fileBytes, {
- String? key,
- String? eTag,
- Duration maxAge = const Duration(days: 30),
- String fileExtension = 'file',
override
Put a file in the cache. It is recommended to specify the eTag
and the
maxAge
. When maxAge
is passed and the eTag is not set the file will
always be downloaded again. The fileExtension
should be without a dot,
for example "jpg". When cache info is available for the url that path
is re-used.
The returned File is saved on disk.
Implementation
@override
Future<File> putFile(
String url,
Uint8List fileBytes, {
String? key,
String? eTag,
Duration maxAge = const Duration(days: 30),
String fileExtension = 'file',
}) async {
key ??= url;
var cacheObject = await _store.retrieveCacheData(key);
cacheObject ??= CacheObject(
url,
key: key,
relativePath: '${const Uuid().v1()}.$fileExtension',
validTill: DateTime.now().add(maxAge),
);
cacheObject = cacheObject.copyWith(
validTill: DateTime.now().add(maxAge),
eTag: eTag,
);
final file = await _config.fileSystem.createFile(cacheObject.relativePath);
await file.writeAsBytes(fileBytes);
_store.putFile(cacheObject);
return file;
}