From 0cdd035dc4e9f6c4bd1c43d1cc7e8d51dfa82786 Mon Sep 17 00:00:00 2001 From: Mark Shipton Date: Mon, 29 Jan 2018 14:09:04 +0000 Subject: [PATCH] Fixes sort order. Adding safety check to make sure we don't delete images that are still queued. Removing CacheObject first to avoid multiple delete attempts of the same file. --- lib/flutter_cache_manager.dart | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/flutter_cache_manager.dart b/lib/flutter_cache_manager.dart index fe47454a..9d6a2b4a 100644 --- a/lib/flutter_cache_manager.dart +++ b/lib/flutter_cache_manager.dart @@ -159,18 +159,24 @@ class CacheManager { //Remove oldest objects when cache contains to many items if (_cacheData.length > maxNrOfCacheObjects) { var allValues = _cacheData.values.toList(); - allValues.sort((c1, c2) => c2.touched.compareTo(c1.touched)); // sort OLDEST first + allValues.sort((c1, c2) => c1.touched.compareTo(c2.touched)); // sort OLDEST first var oldestValues = allValues.take( _cacheData.length - maxNrOfCacheObjects); // get them oldestValues.forEach( (item) async {await _removeFile(item);} ); //remove them } } _removeFile(CacheObject cacheObject) async { + //Ensure the file has been downloaded + if (cacheObject.relativePath == null) { + return; + } + + _cacheData.remove(cacheObject.url); + var file = new File(await cacheObject.getFilePath()); if (await file.exists()) { file.delete(); } - _cacheData.remove(cacheObject.url); } ///Get the file from the cache or online. Depending on availability and age