首页 文章

颤动图像预加载

提问于
浏览
3

是否有可能以某种方式预加载应用程序启动时的图像?就像我的抽屉里有一张背景图片,但是第一次打开抽屉时,我可以看到图像闪烁,就像从资产中取出然后显示一样,一旦我第一次看到它,它给我带来了不好的体验抽屉的开口表现得如预期的那样,因为它是缓存的 . 我想在app load上预取它,所以没有这样的效果 .

2 回答

  • 6

    在构建抽屉之前,使用precacheImage功能开始加载图像 . 例如,在包含抽屉的小部件中:

    class MyWidgetState extends State<MyWidget> {
    
      @override
      void initState() {
        // adjust the provider based on the image type
        precacheImage(new AssetImage('...'));
        super.initState();
      }
    
    }
    
  • 0

    要摆脱"blink",您可以简单地将FadeInImage classtransparent_image结合使用,这将会褪色而不是立即出现 . 在您的情况下,用法如下所示:

    // you need to add transparent_image to your pubspec and import it
    // as it is required to have the actual image fade in from nothing
    import 'package:transparent_image/transparent_image.dart';
    import 'package:flutter/material.dart';
    
    ...
      FadeInImage(
        placeholder: MemoryImage(kTransparentImage),
        image: AssetImage('image.png'),
      )
    

相关问题