如何修复错误:无法将参数类型“void Function(String, int)”分配给参数类型“void Function(String, int?)”,因为“int?”

时间:2021-07-15 12:11:23

标签: firebase flutter firebase-authentication

这里是错误:

无法将参数类型“void Function(String, int)”分配给参数类型“void Function(String, int?)”,因为“int?”可以为空,而 'int' 不是。 代码发送:(字符串验证ID,int resendToken){ ^

这是我的代码:

verifyPhone() async {
var widget;
await FirebaseAuth.instance.verifyPhoneNumber(
    phoneNumber: "+91${widget.phone}",
    verificationCompleted: (PhoneAuthCredential credential) async {
      await FirebaseAuth.instance
          .signInWithCredential(credential)
          .then((value) async {
        if (value.user != null) {
          Navigator.pushAndRemoveUntil(
              context,
              MaterialPageRoute(builder: (context) => Profilescreen()),
              (route) => false);
        }
      });
    },
    verificationFailed: (FirebaseAuthException e) {
      print(e.message);
    },
     codeSent: (String verificationID, int resendToken) {
      setState(() {
        _verificationCode = verificationID;
      });
    },


    codeAutoRetrievalTimeout: (String verificationID) {
      setState(() {
        var verificationCode = verificationID;

      });
      },
    timeout: Duration(seconds: 60));

}

谢谢!

1 个答案:

答案 0 :(得分:1)

关于 SO 有很多类似的问题。该问题来自空安全功能,添加了用问号 int? 标注的可为空类型。

您需要使用正确的类型,就像将 String 放入 int 一样。在这里,您需要调整代码以提供正确的类型。

有时您可以在任何地方使用不可空值,执行手动检查等。您可以阅读有关它的更多信息here

关于您的问题,我认为您必须修改匿名函数 codeSent

(String verificationID, int? resendToken) => ...
相关问题