Nav*_*mar 1 android caching flutter
我不想将图像存储在缓存中。我使用CachedNetworkImage进行图像加载。
我的代码:
var annotatedImg = CachedNetworkImage(
fit: BoxFit.fill,
imageUrl: Constants.IMAGE_BASE_URL + widget._fileId + Constants.CONTOUR_IMG_SUFFIX,
placeholder: (context, url) => progressBar,
errorWidget: (context, url, error) => new Icon(Icons.error),
);
Run Code Online (Sandbox Code Playgroud)
我试过了
annotatedImg.cacheManager.emptyCache();
Run Code Online (Sandbox Code Playgroud)
但显示无法调用emptyCache为null。
nul*_*ull 15
我同意 MichaelM,不要使用 CachedNetworkImage。如果你显示这样的图像:
Image.network(
_headImageUrl,
fit: BoxFit.fitHeight,
)
Run Code Online (Sandbox Code Playgroud)
您可以使用这些代码来清理图像缓存:
PaintingBinding.instance.imageCache.clear();
Run Code Online (Sandbox Code Playgroud)
Abd*_*tem 13
由于 CachedNetworkImage版本 2.3,所有这些解决方案都不起作用,因为它将图像缓存在 2 个不同的地方(DefaultCacheManager 和 NetworkImageProvider)
所以唯一的解决方案是使用evictFromCache内置方法CachedNetworkImage
像这样:
Future _deleteImageFromCache() async {
String url = "your url";
await CachedNetworkImage.evictFromCache(url);
}
Run Code Online (Sandbox Code Playgroud)
evictFromCache是一个静态方法,因此它不需要CachedNetworkImage在您的 Widget 树中有 ,您可以从任何地方直接使用它。
小智 11
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
await DefaultCacheManager().removeFile('YOUR_URL');
不要从第一个答案中使用 emptyCache(),它会清除您的所有缓存
一天后,我找到了解决方案,通过调用emptyCache()方法使用DefaultCacheManger对象。清除缓存数据。
DefaultCacheManger manager = new DefaultCacheManager;
manager.emtyCache(); //clears all data in cache.
Run Code Online (Sandbox Code Playgroud)