NiceLeeのBlog 用爱发电 bilibili~

Flutter 关于图片的二三事(二)

2020-02-17
nIceLee

阅读:


如何刷新图片.mark

起源

第二个问题来了,因为某种原因,在浏览图片的时候可能网络不太好,导致图片没有加载成功。
这个时候,我想要通过双击或者长按的动作让图片刷新。

过程

  • 一开始我关注的是Flutter图片在内存中的缓存机制。
    Flutter - imageCache文档
    但是有一点问题,这些是从整体描述如何获取内存中图片个数和大小等相关信息,以及怎样设置的。
    要实现我的目的其实很简单,十分粗暴 –> 直接清空所有缓存,图片自然就重新load了。
      ImageCache get imageCache => PaintingBinding.instance.imageCache;
      imageCache.clear();
    
  • 这样子十分粗暴,不过因为有了本地缓存,副作用降到了最小。
    我想来想去,应该还有优雅一点的方法。
    如果我此时换个url,图片肯定会刷新,但如果url还是相同的,会被认为是同一张图。
    那么,问题就是怎样让程序逻辑判断两个obj不同。在此之前,先看看它是怎样判断的。

    所以,在url和scale变化之前,某些机制会认为它们没啥不同。
    那么,我们要做的是新增另一个参数(int)seed,并且加入operator==的判断。
    因为已经魔改过了,代码量一点不大,每刷新一次传入的seed++即可。

内容
隐藏