繁体   English   中英

我可以在另一个 getx controller 中使用 getx controller 吗?

[英]Can I use getx controller inside another getx controller?

我正在使用 Get (getx) package 来管理我的应用程序的 state,并且我正在尝试在另一个应用程序中使用 controller。 例如,我有一个 class 包含用于 firebase 身份验证的方法

class FirebaseAuthController extends GetxController {

  static FirebaseAuthController get to => Get.find<FirebaseAuthController>();
  .....

  Future<void> createUser(String email, String password) async {
    try {
      await _auth.createUserWithEmailAndPassword(
          email: email, password: password);
    } catch (e) {
      ...
    }
  }

...
...
}

我还有另一个 controller 它是与 UI 交互的 signUpController


class SignInController extends GetxController {
  static SignInController get to => Get.find<SignInController>();

...
....

  Future<void> clickSignInButton() async {
    print(emailController.text);
    print(passwordController.text);
    if (formKey.currentState.validate()) {
      try {
        await FirebaseAuthController.to
             .login(emailController.text, passwordController.text);
      } catch (e) {
        print(e);
      }
    }
  }
}

当我尝试这样做时,它给了我一个错误

lib/screens/authentication_screens/controller/sign_up_controller.dart:56:37: Error: Getter not found: 'to'.
       await FirebaseAuthController.to

知道可能是什么问题吗?

你绝对可以,尽管这被认为是一种不好的做法。 除非您想从另一个 controller 更新附加到该 controller 的屏幕上显示的数据,否则建议使用类似存储库或用例类的东西。

对于您的实际问题或错误的解决方案,只需将static FirebaseAuthController get to => Get.find<FirebaseAuthController>(); static FirebaseAuthController get to => Get.put(FirebaseAuthController());

是的,您可以在另一个 controller 中使用一个 controller 并使用它的变量并更新它

例子

class HomeController extends GetxController {
    var home = '';
    String userName = '';
    updateName() {}
}

class LoginController extends GetxController {
    HomeController homeController = Get.put(HomeController());
    String email = '';
    String password = '';

    signin() {
        email = homeController.userName;
        homeController.updateName();
        homeController.update();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM