如何使用 GetX 订阅另一个 Controller 中的更改?
Posted
技术标签:
【中文标题】如何使用 GetX 订阅另一个 Controller 中的更改?【英文标题】:How to subscribe to changes in another Controller with GetX? 【发布时间】:2021-11-19 06:41:08 【问题描述】:如何在另一个 GetxController 中订阅更改?
class HomeController extends GetxController
var home = '';
String userName = '';
refresh() async
//call http...
update();
class LoginController extends GetxController
String email = '';
String password = '';
onInit()
GetBuilder<HomeController>((_)
email = _.userName;
);
假设我希望 LoginController
在 HomeController
更新时订阅更改。我该怎么做?
我认为我不能像上面那样使用GetBuilder
?
【问题讨论】:
【参考方案1】:你基本上可以使用下面的代码;
userName 字段必须是可侦听流的扩展 Rx 对象。onInit()
final mailSubs = Get.find<HomeController>.userName.stream.listen((event)
email = event;
);
【讨论】:
【参考方案2】:您应该尝试以下可能对您有用的代码。 您可以监听特定的控制器,也可以监听控制器的变量。
class LoginController extends GetxController
String email = '';
String password = '';
HomeController cnt = Get.find();
@override
onInit()
// Listen to the Controller
cnt.obs.listen((value)
print(value);
);
// Listen to the username variable
cnt.userName.obs.listen((value)
print(value);
);
【讨论】:
以上是关于如何使用 GetX 订阅另一个 Controller 中的更改?的主要内容,如果未能解决你的问题,请参考以下文章