putFile method

  1. @override
Future<File> putFile(
  1. String url,
  2. List<int> fileBytes, {
  3. String? key,
  4. String? eTag,
  5. Duration maxAge = _kDefaultMaxAge,
  6. String fileExtension = 'file',
})
override

Put a file in the cache.

Implementation

@override
Future<File> putFile(
  String url,
  List<int> fileBytes, {
  String? key,
  String? eTag,
  Duration maxAge = _kDefaultMaxAge,
  String fileExtension = 'file',
}) async {
  await _ensureInitialized();

  key ??= url;
  final relativePath = _generateRelativePath(key, fileExtension);
  final filePath = _cacheFilePath(relativePath);

  final file = io.File(filePath);
  await file.writeAsBytes(fileBytes);

  final validTill = DateTime.now().add(maxAge);
  _cacheBox!.put(
      key,
      CacheEntryMetadata(
        url: url,
        relativePath: relativePath,
        validTill: validTill,
        eTag: eTag,
        length: fileBytes.length,
      ).toMap());

  return const LocalFileSystem().file(filePath);
}