使用 TextEditingController 可观察文本永远不会在 init onInit ever() 内部改变?

using TextEditingController observable text never change inside init onInit ever()?

我正在使用 GetX。我需要在用户键入一个字母后将其与一个对象相关联。但是问题是当我在控制器内部的 onInit function 中使用 ever function 时,没有发生任何变化。所以 even 函数 从未实现。

控制器Class代码为:

class RegistrationController extends GetxController {
  // Email
  late Rx<TextEditingController> emailEditionController;
  Rx<Email>? email;
  @override
  void onInit() {
    emailEditionController = TextEditingController().obs;
    ever(
      emailEditionController,
      (_) {
        print("\n checked \n");
        return email = Email(email: emailEditionController.value.text).obs;
      },
    );
    super.onInit();
  }
}

我认为你需要补充:

emailEditionController.value.text.obs 

用你曾经的方法。

onInit 当您的 controller 仅获得一次 initialize 时触发,直到您 force 它或 reinitialize 您的 [=13] 才会再次调用=].所以把你的功能放在它外面并尝试使用下面的代码:

class RegistrationController extends GetxController {
  // Email
  Rx<TextEditingController> emailEditionController = TextEditingController().obs;
  Rx<Email>? email;
  @override
  void onInit() {
    super.onInit();
  }

  ever(String val) {
    print("\n checked $val\n");
    return email?.value = Email(email: val); OR Email(email: emailEditionController.value.text);
  }
}

在 TextField 端

TextFormField(
            controller: cont.emailEditionController.value,
            onChanged: (val){
              cont.ever(val);
            },
          )