1

我的应用程序中有一个以图像为背景的屏幕,该图像位于我的资产文件夹中。当我导航到此屏幕时,背景瞬间为空白,然后图像被加载并出现。这使我的屏幕在半秒或更短的时间内看起来很奇怪,但足以让用户注意到。

我希望只能在加载图像后导航到该屏幕(我可以在前一个屏幕上等待),因此我可以避免这种行为并在用户导航到那里时将屏幕作为一个整体。

我知道可以使图像淡入,但这不是我想要的体验。

4

1 回答 1

1

您需要使用ImageProvider.resolve方法

因此,假设您在资产中注册了一些图像。然后您可以获得图像提供者为

_imageProvider = Image.asset("your_asset").image.

然后你可以添加这样的方法:

import 'dart:ui';

Image _image;
bool _resolved;

void _resolveImageProvider() {
    ImageStream stream = _imageProvider.resolve(createLocalImageConfiguration(context));
    stream.addListener(ImageStreamListener((info, _) {
      setState(() {
        //here you may set some flags or anything which indicates the image is in memory now.
        _resolved = true;
        _image = info.image;
      });
    }));
  }

然后你可以在“上一个屏幕”上调用这个方法,等到监听器被触发,然后才导航到下一个视图。

于 2019-08-12T10:53:28.383 回答