CachedNetworkImage图像不会更改为相同的名称

时间:2019-06-12 13:01:08

标签: flutter dart

我正在使用https://pub.dev/packages/cached_network_image来显示网络图像。

我遇到了一个奇怪的问题。在这里,我设置了个人资料图片,并且个人资料图片的网址相同,只有图片会被更改。

假设,如果我是第一次上传个人资料图片,那么我会得到https://xx.yyy/user/profileAvatar这样的网址,第一次一切正常。但是,当我第二次更改个人资料图片时,我将获得与上述新图片相同的网址。但是问题出在这里CachedNetworkImage无法加载我的新图像。

需要您的指导来解决此问题。

  

PS。 :我知道,如果我在上传第二张图片之前从缓存目录中删除了上一张图片,它将解决我的问题。

已更新

OMG,Image.network也无法使用同样的功能。

4 个答案:

答案 0 :(得分:1)

如果图像发生变化,我认为这是一种新资源。如果我们将其视为新资源,则它实际上应该具有与其相关联的新资源定位符(即新URI)。如果要更新图像但使用相同的URI,则在任何地方(在浏览器,CDN等中)缓存图像都变得非常困难。

答案 1 :(得分:0)

如果不同图像的URL不变,则最好避免使用CachedNetworkImage...。您可以简单地使用NetworkImage小部件

答案 2 :(得分:0)

因此,对于我来说,调用MyCache.evict(key),从磁盘删除映像并调用setState()并没有任何作用。但是,如果我在调用setState()之前也调用MyImageDownloader.evict(key),将触发一个新下载,该下载应获取相同键的新图像。

问题是您必须从所有地方逐出和/或删除图像,包括扩展ImageProvider的类,在我的情况下,该类是MyImageDownloader。

如果其他所有操作都完成了,但您仍然没有收到新图像,请调用“不推荐” PaintingBinding.instance.imageCache.evict(key)

那里有两个图书馆,每个图书馆都有自己的特殊成分。因此,尝试尝试一种对您更有效的方法。这个想法是,您可以从任何库的缓存中逐出,从磁盘中删除,然后从扩展ImageProvider的任何类中调用逐出。

答案 3 :(得分:0)

当您想清除 CachedNetworkImage 时使用此代码

await CachedNetworkImage.evictFromCache(url);