1、清除图片缓存

由于动态图加载完成后,由于缓存原因,再次加载图片时,会直接从缓存读取最后一帧的画面。需要清缓存后预加载图片

  1. // 清除图片缓存
  2. void clearImageCache(AssetBundleImageKey key) {
  3. final ImageCache imageCache = PaintingBinding.instance.imageCache;
  4. imageCache.evict(key);
  5. }

2、获取AssetBundleImageKey

  1. AssetBundleImageKey getAssetBundleImageKey(ImageProvider provider, BuildContext context) async {
  2. final ImageConfiguration config = createLocalImageConfiguration(context);
  3. return await provider.obtainKey(config);
  4. }

3、预加载图片

  1. void preLoadImage(ImageProvider provider, BuildContext context) {
  2. return precacheImage(provider, context)
  3. };

参考:https://book.flutterchina.club/chapter14/image_and_cache.html