Flutter自带的Image.network()从网络加载图片后,如果服务器上的图片改变了,但是url没变,就算使用setState进行rebuild,图片也不会跟着更新。这是因为Image自带了cache。
-
先清除Image的缓存
Future<bool> evictImage(String imageURL, Map<String, String> headers) async { final NetworkImage provider = NetworkImage(imageURL, headers: headers); return await provider.evict(); }
-
改变Image的key,rebuild时会重新渲染。
var imgKey = UniqueKey(); @override Widget build(BuildContext context) { return Image.network( "https://xxx/xxx.jpg" key: imgKey, ); } 在需要刷新的时候调用 refreshImage(){ setState((){ imgKey = UniqueKey(); }) }