我有一个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;
}
}
您可以使用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()
将自动执行,并且每次都执行。