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;
}