Search code examples
flutterdio

How to trigger a response when another response done successfuly?


i m getting a link from a response data for another response. how can i wait for finish this first response ?

    Response responsePostImage =
    await dio.get("responseLink$imgId");
var parsedPostImage = jsonDecode("$responsePostImage");
blogModel.imagePostImage =
    parsedPostImage["media_details"]["sizes"]["medium"]["source_url"];
var parsedPpp = parsedPostImage["_links"]["author"];
blogModel.imagePpUrl = parsedPpp[0]["href"];

 Response responseGetPp = await dio.get(blogModel.imagePp);
  var parsedGetPp = jsonDecode("$responseGetPp");
  blogModel.imagePp = parsedGetPp["avatar_urls"]["48"];
  print(parsedGetPp["avatar_urls"]["48"]);

Solution

  • I think you can check the http response success status code (200) then call the next api.

    Response responsePostImage = await dio.get("responseLink$imgId");
    
    if(responsePostImage.statusCode == 200) {
       var parsedPostImage = jsonDecode("$responsePostImage");
       blogModel.imagePostImage = parsedPostImage["media_details"]["sizes"]["medium"]["source_url"];
       var parsedPpp = parsedPostImage["_links"]["author"];
       blogModel.imagePpUrl = parsedPpp[0]["href"];
        
       Response responseGetPp = await dio.get(blogModel.imagePp);
       if(responseGetPp.statusCode == 200) {
         var parsedGetPp = jsonDecode("$responseGetPp");
         blogModel.imagePp = parsedGetPp["avatar_urls"]["48"];
         print(parsedGetPp["avatar_urls"]["48"]); 
       }
    }