如何刷新图片.mark
起源
第二个问题来了,因为某种原因,在浏览图片的时候可能网络不太好,导致图片没有加载成功。
这个时候,我想要通过双击或者长按的动作让图片刷新。
过程
- 一开始我关注的是Flutter图片在内存中的缓存机制。
Flutter - imageCache文档
但是有一点问题,这些是从整体描述如何获取内存中图片个数和大小等相关信息,以及怎样设置的。
要实现我的目的其实很简单,十分粗暴 –> 直接清空所有缓存,图片自然就重新load了。ImageCache get imageCache => PaintingBinding.instance.imageCache; imageCache.clear();
- 这样子十分粗暴,不过因为有了本地缓存,副作用降到了最小。
我想来想去,应该还有优雅一点的方法。
如果我此时换个url,图片肯定会刷新,但如果url还是相同的,会被认为是同一张图。
那么,问题就是怎样让程序逻辑判断两个obj不同。在此之前,先看看它是怎样判断的。
所以,在url和scale变化之前,某些机制会认为它们没啥不同。
那么,我们要做的是新增另一个参数(int)seed,并且加入operator==的判断。
因为已经魔改过了,代码量一点不大,每刷新一次传入的seed++即可。