我已经解决了所有类似的问题,但没有一个与我的问题类似。 我有以下功能,用于在 FirebaseAuth 实例上使用 verifyPhoneNumber() 验证 OTP 发送的手机号码。
Future<User?> manualVerification(code) async {
try {
await _firebaseAuth .signInWithCredential(
PhoneAuthProvider.credential( verificationId: _verificationCode, smsCode: code, ))
.then((value) async {
if (value.user != null) {
print("User not null");
print("user ${value.user}");
return value.user;
} else {
print("User null!");
}
}).catchError((err) {
print("manual verification Failed: $err"); return err; });
} catch (e) {
print("manualVerification Catch| $e");
}
}
但是,一旦函数被调用并完成,我会按预期在控制台中得到“用户非空”。
但我也得到“在空值上使用的空检查运算符”和“类型 '_CastError' 不是类型 'FutureOr
到目前为止,我已将函数修改为:
Future<User?> manualVerification(code) async {
try {
PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.credential(
verificationId: _verificationCode,
smsCode: code,
);
final authCredential =
await _firebaseAuth.signInWithCredential(phoneAuthCredential);
if (authCredential.user != null) {
print("Got User");
print("${authCredential.user!.uid}");
return authCredential.user;
}
} on FirebaseException catch (e) {
print("manualVerification Catch| ${e.message}");
}
}
虽然该函数打印用户的 uid,但我收到此错误:
[VERBOSE-2:ui_dart_state.cc(186)] Unhandled Exception: Null check operator used on a null value
#0 UserInfo.uid (package:firebase_auth_platform_interface/src/user_info.dart:52:24)
#1 UserInfo.toString (package:firebase_auth_platform_interface/src/user_info.dart:57:144)
#2 StringBuffer.write (dart:core-patch/string_buffer_patch.dart:64:22)
#3 StringBuffer.writeAll (dart:core-patch/string_buffer_patch.dart:102:7)
#4 IterableBase.iterableToFullString (dart:collection/iterable.dart:267:14)
#5 ListBase.listToString (dart:collection/list.dart:43:20)
#6 List.toString (dart:core-patch/growable_array.dart:489:33)
#7 _StringBase._interpolate (dart:core-patch/string_patch.dart:855:19)
#8 User.toString (package:firebase_auth/src/user.dart:357:5)
#9 _StringBase._interpolate (dart:core-patch/string_patch.dart:855:19)
#10 AuthViewModel.verifyPin (package:sxxxxx/ui/auth/auth_viewmodel.dart:81:29)
我用 firebase_auth 尝试了相同的代码:^1.0.3 和 ^1.1.0 我使用的是 Flutter 2.0.4 • 通道稳定。
请帮忙
答案 0 :(得分:0)
更新您的 Firebase 身份验证版本。 这解决了我的问题