解决方案1
我认为没有必要等待widget1
.在显示widget1
和widget2
assets资源 之前,可以使用precacheImage
路预缓存它们.这样他们几乎马上就会表现出来.
await precacheImage(AssetImage('assets/widget1.png'), context);
await precacheImage(AssetImage('assets/widget2.png'), context);
从文档中,在调用precacheImage
之后:
如果图像稍后被Image
、BoxDecoration
或FadeInImage
使用,则加载速度可能会更快.图像的使用者不需要使用相同的ImageProvider实例.只要两个图像共享同一密钥,并且图像由缓存保存,ImageCache就会找到图像.
解决方案2
否则,可以使用Future.delayed
等待widget1
渲染.对delayed
的调用应该是构建widget2
的某个标志的setState
,比如说bool _buildWidget2 = false
标志.类似于以下代码段:
Future.delayed(
Duration(milliseconds: 150),
() => setState(() => _buildWidget2 = true),
);
然后在Stack
上应该是:
Stack(
children: [
Widget1(),
if (_buildWidget2)
Widget2(),
],
)