【发布时间】:2021-11-02 21:37:44
【问题描述】:
这是flutter中getx相关的问题。 我有 2 个控制器。合同控制器和通知控制器。 在 ContractsController 中,我通过调用 Api 请求将值放入观察者变量中。 我现在想要的是在另一个控制器 - NotificationController 中获取该变量的数据。 如何使用 getx 函数获取该值?
合同控制器
class ContractsController extends GetxController {
ExpiringContractRepository _expiringContractRepository;
final expiringContracts = <ExpiringContract>[].obs; // This is the value what I want in another controller
ContractsController() {
_expiringContractRepository = new ExpiringContractRepository();
}
@override
Future<void> onInit() async {
await refreshContracts();
super.onInit();
}
Future refreshContracts({bool showMessage}) async {
await getExpiringContracts();
if (showMessage == true) {
Get.showSnackbar(Ui.SuccessSnackBar(message: "List of expiring contracts refreshed successfully".tr));
}
}
Future getExpiringContracts() async {
try {
expiringContracts.value = await _expiringContractRepository.getAll(); // put the value from the api
} catch (e) {
Get.showSnackbar(Ui.ErrorSnackBar(message: e.toString()));
}
}
}
在 api 请求之后,expiringContracts 已成功更新数据。 现在,我想在 NotificationController 中获取该值
通知控制器
class NotificationsController extends GetxController {
final notifications = <Notification>[].obs;
ContractsController contractsController;
NotificationsController() {
}
@override
void onInit() async {
contractsController = Get.find<ContractsController>();
print(contractsController.expiringContracts); // This shows an empty list ?????
super.onInit();
}
}
【问题讨论】:
标签: flutter oop dart flutter-getx