write method

  1. @override
Future<CachedAssetEntry?> write({
  1. required String sourceUri,
  2. required List<int> bytes,
  3. required DateTime cachedAt,
  4. String? contentType,
  5. String? suggestedFileExtension,
})
override

Implementation

@override
Future<CachedAssetEntry?> write({
  required String sourceUri,
  required List<int> bytes,
  required DateTime cachedAt,
  String? contentType,
  String? suggestedFileExtension,
}) async {
  await _directory.create(recursive: true);

  final extension = _resolveFileExtension(
    sourceUri: sourceUri,
    contentType: contentType,
    suggestedFileExtension: suggestedFileExtension,
  );
  final assetFile = _assetFileFor(sourceUri, extension: extension);
  await assetFile.writeAsBytes(bytes, flush: true);

  final entry = CachedAssetEntry(
    sourceUri: sourceUri,
    filePath: assetFile.path,
    cachedAt: cachedAt,
    contentType: contentType,
  );
  await _metadataFileFor(
    sourceUri,
  ).writeAsString(jsonEncode(entry.toJson()), flush: true);
  _entries[sourceUri] = entry;
  _loadedKeys.add(sourceUri);
  return entry;
}