颤抖着如何设置等待未来的方法

时间:2020-05-04 07:36:58

标签: android json api flutter future

我有三个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。我希望您能理解并为我找到合适的解决方案。

0 个答案:

没有答案