我有三个api,第一个api负责获取第二个api中使用的某些数据,依此类推,第二个api负责第三个api所需的一些数据。 我做了3个未来的功能。它们是按顺序排列的。 例如
int datafromapi_one;
bool datafromapi_two;
bool datafromapi_three;
Future getDataFromApi_one() async {
http.Response api_one_response = await http.get("http://api_one_url");
int data_from_api_one = json.decode(api_one_response.body); // the response data is in numeric only
setState(){
datafromapi_one = data_from_api_one;
}
}
Future getDataFromApi_two() async {
http.Response api_two_response = await http.get("http://api_two_url?with_parameter=datafromapi_one");
bool data_from_api_two = json.decode(api_two_response.body); // the response data is in boolean value
setState(){
datafromapi_two = data_from_api_two;
}
}
Future getDataFromApi_three() async {
http.Response api_three_response = await http.get("http://api_three_url?with_parameter=datafromapi_two");
bool data_from_api_three = json.decode(api_three_response.body); // the response data is in boolean value
setState(){
datafromapi_three = data_from_api_three;
}
}
FlatButton(
onPressed:(){
getDataFromApi_one();
print(datafromapi_one.toString());
getDataFromApi_two();
print(datafromapi_two.toString());
getDataFromApi_three();
print(datafromapi_three.toString());
if(datafromapi_three == true && datafromapi_two == true && datafromapi_one != null ){
// Navigate.to.next.screen()//
}
else{
// Toast.Show( error on which api )
}
}
)
我实现了此方法,并陷入应用程序中,有时api_one的数据稍后会收到,如果没有第一个api的数据,从属api不能很好地工作。 现在我想在api_two上设置一些等待函数,以便如果数据未到达,则它必须等待数据直到到达,然后使用该数据运行第二个api,并希望将该api_three放在等待直到数据到达。然后运行api_three。我希望您能理解并为我找到合适的解决方案。