flutter_cache_manager icon indicating copy to clipboard operation
flutter_cache_manager copied to clipboard

can not delete cache file

Open leetomlee123 opened this issue 1 year ago • 0 comments

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

leetomlee123 avatar Oct 14 '24 03:10 leetomlee123