首页 > 解决方案 > Firebase Flutter错误尝试在空对象引用上调用虚拟方法'java.lang.Class java.lang.Object.getClass()'

问题描述

我在 Firebase 上进行身份验证时遇到问题。

有一个登录屏幕要求输入数字,然后在下一个按钮上按下它进入OTP 屏幕,从而对用户进行身份验证。

但是在输入验证号后,它没有进行身份验证,并说Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference

这是我用来验证用户的代码

  final String PhoneNumber; //globally declared

_verifyPhone() async {
    await FirebaseAuth.instance.verifyPhoneNumber(
        phoneNumber: widget.PhoneNumber,
        verificationCompleted: (PhoneAuthCredential credential) async {
          await FirebaseAuth.instance
              .signInWithCredential(credential)
              .then((value) async {
            if (value.user != null) {
              Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (context) =>
                      EmailScreen(PhoneNumber: widget.PhoneNumber),
                ),
              );
            }
          });
        },
        verificationFailed: (FirebaseAuthException e) {
          print(e.message);
        },
        codeSent: (String verificationID, int resendToken) {
          setState(() {
            _verificationCode = verificationID;
          });
        },
        codeAutoRetrievalTimeout: (String verificationID) {
          setState(() {
            _verificationCode = verificationID;
          });
        },
        timeout: Duration(seconds: 60));
  }

这是 PinEntryTextField 的 OnSubmit 函数

    PinEntryTextField(
          fields: 6,
          showFieldAsBox: true,
          onSubmit: (String pin) async {
            try {
              await FirebaseAuth.instance
                  .signInWithCredential(PhoneAuthProvider.credential(
                      verificationId: _verificationCode, smsCode: pin))
                  .then((value) async {
                if (value.user != null) {
                  Navigator.push(
                      context,
                      MaterialPageRoute(
                          builder: (context) => EmailScreen(
                                PhoneNumber: widget.PhoneNumber,
                              )));
                }
              });
            } catch (e) {
              FocusScope.of(context).unfocus();
              print(e);
              ScaffoldMessenger.of(context).showSnackBar(SnackBar(
                content: Text("Failed because $e"),
              ));
            }
          },
        ),

现在它有时有效,但有时无效,这很奇怪。

任何帮助,将不胜感激..

谢谢

标签: firebasefluttervalidationfirebase-authentication

解决方案


没关系,我不得不等待几秒钟,直到 SMS 代码“到达”.. 因为我使用的是测试电话号码

傻我


推荐阅读