У меня есть три API-интерфейса. Первый API-интерфейс отвечает за получение некоторых данных, которые используются во втором API-интерфейсе, поэтому второй API-интерфейс отвечает за некоторые данные, необходимые для 3-го 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. Я надеюсь, что вы можете понять и найти правильное решение для меня.