这里是错误:
无法将参数类型“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));
}
谢谢!
答案 0 :(得分:1)
关于 SO 有很多类似的问题。该问题来自空安全功能,添加了用问号 int?
标注的可为空类型。
您需要使用正确的类型,就像将 String
放入 int
一样。在这里,您需要调整代码以提供正确的类型。
有时您可以在任何地方使用不可空值,执行手动检查等。您可以阅读有关它的更多信息here。
关于您的问题,我认为您必须修改匿名函数 codeSent
:
(String verificationID, int? resendToken) => ...