Flutter Image.net工作未更新

时间:2018-04-18 05:47:30

标签: dart flutter

我有一个关于使用有状态小部件中的Image.network更新图像的问题,在更改设置状态内的网址时它没有更新,但是当我进行热重新加载时,图像已更新。

任何人都知道它为什么会发生?

5 个答案:

答案 0 :(得分:1)

如果网址与以前相同,请尝试在网址中添加一些随机查询字符串,例如:

Image.network(url + "?v=1");

答案 1 :(得分:1)

首先,您需要向小部件添加密钥

  1. 这将确保在重建小部件树时,图像小部件得到 也重建了

     Image(
     image: NetworkImageSSL(_imageUrlPath),
     fit: BoxFit.cover,
     key: ValueKey(new Random().nextInt(100)),),
      ),
    
  2. 然后清除图像缓存

    In my case have to clear image cache when image is uploaded to server
    Ex=>
    
    saveDataToServer(){
    if(onSucess){
    imageCache.clear();
     imageCache.clearLiveImages();
          }
    }
    

答案 2 :(得分:0)

为Image.network提供一个以url为值的密钥。

key: ValueKey(url)

答案 3 :(得分:0)

清除两个图像缓存并添加密钥是可行的,但这似乎有点过头了。 Ian的答案是在url中使用参数,但是我想要一些缓存,并且不想向服务器请求参数。 因此,我最终得到了以下解决方案,该解决方案使用了intl包中的DateFormat。

// Make parameter using DateFormat. This image will be cached for a minute.
var nowParam = DateFormat('yyyyddMMHHmm').format(DateTime.now());
// Use # instead of ? or & in url as nothing after # is transmitted to the server.
var img = Image.network(url + '#' + nowParam);

答案 4 :(得分:-1)

我通过在Image.newtwork中添加密钥值来解决此问题,然后您需要每次删除缓存,然后再发布缓存。

imageCache.clear();
Image myimage = Image.network('url', key: ValueKey(new Random().nextInt(100)),);