如何运行两个异步等待任务,并在它们都在 flutter 中完成时继续进行

问题描述 投票:0回答:1

我正在显示启动屏幕,它等待 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(),
        ),
      );
    }
flutter dart async-await
1个回答
0
投票

您可以使用

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(),
        ),
      );
      },
    );
© www.soinside.com 2019 - 2024. All rights reserved.