flutter 在第一个请求完成后发出get请求Getx

iszxjhcz  于 2023-02-13  发布在  Flutter
关注(0)|答案(2)|浏览(147)

我想在第一个请求完成后发出get请求,因为我需要从第一个请求的响应中发送数据,并带有第二个请求的主体到服务器。.我如何使用getx执行此操作
谢谢

class ProductsController extends GetxController with StateMixin<Posts> {

  @override
  void onInit() {
    getData();
    super.onInit();
  }

  getData() async {
    try {
      change(null, status: RxStatus.loading());
      await postsApiProvider
          .getPosts()
          .then((value) {
      
        change(value, status: RxStatus.success());
      });
    } catch (exception) {
      change(null, status: RxStatus.error(exception.toString()));
    }
  }

  // i want this function fire after getData() 
  _getRelated() async {
    try {
      await postsApiProvider
          .getRelated(
            price: value.region  ----> because i need access to getDate values 
           )
          .then((value) {
      
      });
    } catch (e) {
      debugPrint(e.toString());
    }
  }
}

我试过那种方法,但不管用:

@override
  void onReady() {
    _getRelated();
    super.onReady();
  }
lrpiutwd

lrpiutwd1#

你可以使用finally来实现你的结果,但是我建议你为此创建一个函数,这样将来如果你想在第二个函数的回调函数的基础上再添加一个函数,你就可以很容易地实现它。
下面是一个例子:

gloablfun()async{
 await getData();
 await _getRelated();
}

然后你可以调用onInit方法中的全局函数:

@override
  void onInit() {
    gloablfun();
    super.onInit();
  }

通过使用这种方法,您可以在将来添加更多的函数,并且您的代码看起来会比以前更干净。

8cdiaqws

8cdiaqws2#

try与finally连用例如

//a sample model which is have data
 final Rx<MyModel> model = Model().obs;
 @override
  void onInit() {
   myFunctiontocall();
    super.onInit();
  }
 
 myFunctiontocall() async{

   try{
    // from the first function
    // make a function that will have data to the model
    myFirstFunctionToRun();
   }finally{
    // from done process in the above next is the finally
    // which next to be run
    // call the second function but make sure the model
    // have data
    thenFinallymySecondFunctiontoRun();
   }

  }

相关问题