flutter_cache_manager
flutter_cache_manager copied to clipboard
can not delete cache file
if (toRemove.contains(cacheObject.id)) return;
toRemove.add(cacheObject.id!);
if (_memCache.containsKey(cacheObject.key)) {
_memCache.remove(cacheObject.key);
}
if (_futureCache.containsKey(cacheObject.key)) {
await _futureCache.remove(cacheObject.key);
}
final file = io.File(cacheObject.relativePath);
if (file.existsSync()) {
try {
await file.delete();
// ignore: unused_catch_clause
} on PathNotFoundException catch (e) {
// File has already been deleted. Do nothing #184
}
}
cacheObject.relativePath is not real abs file path ,delete file can not work
class CustomCacheManager { static const key = 'tsl'; static final fileSystem = ExternalStorageFileSystem(key); static CacheManager instance = CacheManager( Config(key, stalePeriod: const Duration(days: 30), maxNrOfCacheObjects: 999999999, fileSystem: fileSystem), ); }
`
class ExternalStorageFileSystem implements FileSystem {
final Future<Directory> _fileDir;
final String _cacheKey;
ExternalStorageFileSystem(this._cacheKey) : _fileDir = createDirectory(_cacheKey);
static Future<Directory> createDirectory(String key) async { final baseDir = await getExternalStorageDirectory(); final path = p.join(baseDir!.path, key);
const fs = LocalFileSystem();
final directory = fs.directory(path);
await directory.create(recursive: true);
return directory;
}
@override Future<File> createFile(String name) async { final directory = await _fileDir; if (!(await directory.exists())) { await createDirectory(_cacheKey); } return directory.childFile(name); }
void emptyCache() async { final directory = await _fileDir; if (await directory.exists()) { await directory.delete(recursive: true); } } } `