在Getx Flutter中使用API后如何不断更新数据?

ukqbszuj  于 2022-11-30  发布在  Flutter
关注(0)|答案(1)|浏览(221)

我有一个getx控制器和一个更新数据库中数据的方法,我只是想知道如何在获取API后不断刷新或更新UI?下面是我的控制器

class AdditionalContactController extends GetxController {
  var additionalContactList = <AdditionalContact>[].obs;
  var isLoading = true.obs;
  UserController _userController = Get.find();

  @override
  void onInit() {
    super.onInit();
    _userController.getMail().then((value) async {
      await _userController.getUser(value);
      getAdditionalContacts(_userController.user.value.id);
    });
  }

  //Update contact
  Future<bool> updateContact({...}) async {
    var response = await http.post(
        Uri.parse(
            "https://..."),
        body: {
          ...
        });
    var jsonData = jsonDecode(response.body);

    if (jsonData == "failed") {
      return false;
    }

    return true;
  }
}
5sxhfpxr

5sxhfpxr1#

您可以使用ever工作线程调用一个方法,该方法在每次Rx赋值新值时执行:

class AdditionalContactController extends GetxController {
  var additionalContactList = <AdditionalContact>[].obs;

     @override
  void onInit() {
    super.onInit();
   ever(additionalContactList, methodToExecute)
 });
  }


  methodToExecute(list) {
   /* Code that will execute every time the additionalContactList changes */
    }

现在,每次additionalContactList被改变,例如,如果我们向其分配新的List

additionalContactList.value = [];

然后methodToExecute()将自动执行,并且每次都会执行。

相关问题