我正在显示启动屏幕,它等待 3 秒,然后路由到另一个屏幕,但我的另一个屏幕需要加载 GIF 文件,所以我使用了 precaceh 方法,所以我的问题是我的启动屏幕等待 3 秒,然后等待缓存图像。我希望两者同时运行,并且仅当它们都完成时才运行下一行(路线)(即最短等待时间为 3 秒,如果图像需要更多时间来缓存,则应该增加等待时间)。
这是我在初始化状态下调用的函数
void delayAndRoute() async {
await Future.delayed(const Duration(milliseconds: 3000));
await precacheImage(AssetImage("assets/images/01.gif"), context);
await precacheImage(AssetImage("assets/images/02.gif"), context);
await precacheImage(AssetImage("assets/images/03.gif"), context);
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => const Login(),
),
);
}
您可以使用
Future.wait
方法获取 future 列表并等待多个 future 完成并收集它们的结果。
这是代码:
Future.wait([
Future.delayed(const Duration(milliseconds: 3000)),
precacheImage(const AssetImage("assets/images/01.gif"), context),
precacheImage(const AssetImage("assets/images/02.gif"), context),
precacheImage(const AssetImage("assets/images/03.gif"), context),
]).then(
(value) {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => const Login(),
),
);
},
);