同时调用多个http端点,合并结果并返回到dart中的单个futurebuilder

Joh*_*ohn 1 dart flutter

我需要从单个 futurebuilder 调用两个 api 端点,并将这些结果合并到一个返回列表变量中。我可以调用单个 http 端点并返回结果,我不确定如何从单个请求同时执行两个单独的 http 调用。

Ric*_*eap 5

每个 HTTP 请求都会返回一个 future。在一个async方法中,将两个期货添加到一个列表中。然后等待两者都完成await Future.wait(theList)

然后处理返回代码、主体等,根据您的需要组合结果,并返回处理后的组合值。在您未来的构建器中,您将收到此结果。

Dartlang 等待不止一个未来

例如:

Future<List<Map<String, dynamic>>> getDoubleData() async {
  var value = <Map<String, dynamic>>[];
  var r1 = http.get('https://www.dart.dev');
  var r2 = http.get('https://www.flutter.dev');
  var results = await Future.wait([r1, r2]); // list of Responses
  for (var response in results) {
    print(response.statusCode);
    // todo - parse the response - perhaps JSON
    value.add(json.decode(response.body));
  }
  return value;
}
Run Code Online (Sandbox Code Playgroud)