我的应用程序中有一个屏幕,图像为背景,该图像位于我的资产文件夹中。当我导航到该屏幕时,背景暂时空白,然后加载图像并显示出来。半秒钟或更短的时间使我的屏幕看起来很奇怪,但是足以让用户注意到。
我希望只能在加载图像后才能导航到该屏幕(我可以在上一个屏幕上等待),这样我就可以避免这种现象,并在用户导航到整个屏幕时将其作为一个整体。
我知道可以使图像淡入,但这不是我想要的体验。
答案 0 :(得分: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;
});
}));
}
然后,您可以在“上一个屏幕”上调用此方法,等到触发侦听器之后,才可以导航到下一个视图。