Multithreading 如何同时启动多个FutureBuilder以填充单个FutureBuilder ListView?

Multithreading 如何同时启动多个FutureBuilder以填充单个FutureBuilder ListView?,multithreading,flutter,dart,Multithreading,Flutter,Dart,到目前为止,我的工作是一个接一个地给未来打电话。所有这些都会添加到列表中。 但是,有时其中一个API可能不起作用,因此未加载的其余API会受到限制。我想同时启动所有的futures,并让它们并行运行,以便在任何一个futures产生结果时填充列表。我怎样才能做到这一点 TLDR:dart/FLIFT中的多线程?如果您有3个未来并行执行: Future<int> async1() async { await Future<String>.delayed(const

到目前为止,我的工作是一个接一个地给未来打电话。所有这些都会添加到列表中。 但是,有时其中一个API可能不起作用,因此未加载的其余API会受到限制。我想同时启动所有的futures,并让它们并行运行,以便在任何一个futures产生结果时填充列表。我怎样才能做到这一点


TLDR:dart/FLIFT中的多线程?

如果您有3个未来并行执行:

Future<int> async1() async {
    await Future<String>.delayed(const Duration(seconds: 1));
    return 10;
}

Future<int> async2() async {
    await Future<String>.delayed(const Duration(seconds: 2));
    return 20;
}

Future<int> async3() async {
    await Future<String>.delayed(const Duration(seconds: 3));
    return 30;
}
Future async1()异步{
等待未来。延迟(持续时间(秒:1));
返回10;
}
Future async2()异步{
等待未来。延迟(持续时间(秒:2));
返回20;
}
Future async3()异步{
等待未来。延迟(持续时间(秒:3));
返回30;
}
通过执行以下操作,您可以并行执行它们并等待它们全部完成:

Future.wait([async1(), async2(), async3()]).then((List<int> nums) {
     // This code executes in 3 seconds (3 endpoints in parallel)
});
Future.wait([async1()、async2()、async3())。然后((列出nums){
//此代码在3秒内执行(3个端点并行)
});

谢谢。then(){}中的代码是在每次一个期货完成时执行,还是在所有期货完成后只执行一次?因为我希望futures在完成后立即填充列表,而不等待其他futures。不,它只会在所有任务完成后执行。