我不想在缓存中存储图像.. iam正在使用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),
);
我试过了
annotatedImg.cacheManager.emptyCache();
但其显示无法调用emptyCache为null..
8条答案
按热度按时间dtcbnfnu1#
自CachedNetworkImage版本2.3起,所有这些解决方案都无法工作,因为它在2个不同的地方缓存图像(DefaultCacheManager和NetworkImageProvider)
因此,唯一的解决方案是使用
CachedNetworkImage
中的evictFromCache
内置方法就像这样:
evictFromCache
是一个静态方法,所以它不需要在Widget树中有CachedNetworkImage
,你可以直接从任何地方使用它。tgabmvqs2#
我同意MichaelM,不要使用CachedNetworkImage。如果你像这样显示图像:
你可以使用这些代码来清理图像缓存:
qlckcl4x3#
首先将软件包(flutter_cache_manager)添加到pubspec.yaml文件中,如下所示:
依赖关系:flutter:sdk:flutter***flutter_cache_manager:^1.1.3***
一天后,我找到了解决办法。通过调用emptyCache()方法使用DefaultCacheManager对象,这将清除该高速缓存数据。
sh7euo9m4#
import 'package:flutter_cache_manager/flutter_cache_manager.dart'; await DefaultCacheManager().removeFile('YOUR_URL');
不要在第一个答案中使用emptyCache(),它会清除所有缓存
8i9zcol25#
CachedNetworkImage将图像存储在临时(缓存)文件夹中,您可以使用
path_provider
的getTemporaryDirectory()
方法访问它。在那里你会发现libCachedImageData
(你可能需要检查名称)。您可以在此处删除文件夹。要在你的应用中做到这一点,你应该使用Directory类,比如:
p5fdfcr16#
如果您不想将下载的映像存储在缓存中,则不要使用
CachedNetworkImage
。相反,使用带有NetworkImage的FadeInImage
小部件:cwtwac6a7#
在CachedNetworkImage中,添加CacheManager Config:
然后要清除它,添加这个void语句:
dfddblmv8#
1-用于CachedNetworkImage库
你可以用其中一个
await DefaultCacheManager().removeFile("fluttercampus");
await DefaultCacheManager().removeFile('YOUR_URL');
await CachedNetworkImage.evictFromCache('YOUR_URL');
不要使用此选项,因为它会删除CacheManager中的所有数据
await DefaultCacheManager().emptyCache();
2-如果要从www.example.com中删除Image.network使用此
你可以使用这些代码来清理图像缓存: