Firebase 颤振能';找不到uid,它返回null

Firebase 颤振能';找不到uid,它返回null,firebase,flutter,google-cloud-firestore,firebase-authentication,Firebase,Flutter,Google Cloud Firestore,Firebase Authentication,我的应用程序找不到uid。我认为逻辑有问题。如果验证将成功完成,则应创建uid并写入Firebase 问题在于: 我的代码: Future<void> signInWithTelephoneNumber(context, {String phoneNumber, smsCode, codeController}) async { emit(state.copyWith( phoneNumber: phoneNumber, isInProgress:

我的应用程序找不到uid。我认为逻辑有问题。如果验证将成功完成,则应创建uid并写入Firebase

问题在于:

我的代码:

Future<void> signInWithTelephoneNumber(context,
      {String phoneNumber, smsCode, codeController}) async {
    emit(state.copyWith(
        phoneNumber: phoneNumber, isInProgress: true, errorMessage: ""));

    await FirebaseAuth.instance.verifyPhoneNumber(
      phoneNumber: "+9$phoneNumber",
      timeout: const Duration(seconds: 60),
      verificationCompleted: (PhoneAuthCredential credential) async {
        await FirebaseAuth.instance
            .signInWithCredential(credential)
            .then((value) async {
          final uid = value.user.uid;
          
          final existingUserDocs = await FirebaseFirestore.instance
              .collection('Users')
              .where('uid', isEqualTo: uid)
              .get();

          if (existingUserDocs.docs.isEmpty || existingUserDocs.docs == null) {
            FirebaseFirestore.instance.collection('Users').doc(uid).set({
              'email': phoneNumber,
              'username': "Deneme User",
              'uid': uid,
              'userPhotoUrl':
                  "https://kulisvar.com/wp-content/uploads/2019/11/sagopa-kajmer-696x465.jpg"
            });
          }
          Navigator.pushReplacement(
              context, MaterialPageRoute(builder: (context) => HomePage()));
        });
      },
带电话号码的未来信号(上下文、,
{String phoneNumber,smsCode,codeController})异步{
发射(state.copyWith)(
phoneNumber:phoneNumber,isInProgress:true,错误消息:“”);
等待FirebaseAuth.instance.verifyPhoneNumber(
电话号码:“+9$phoneNumber”,
超时:常数持续时间(秒:60),
验证已完成:(PhoneAuthCredential凭据)异步{
等待FirebaseAuth.instance
.signiWithCredential(凭证)
.then((值)异步{
最终uid=value.user.uid;
final existingUserDocs=等待FirebaseFirestore.instance
.collection('用户')
.where('uid',isEqualTo:uid)
.get();
if(existingUserDocs.docs.isEmpty | | existingUserDocs.docs==null){
FirebaseFirestore.instance.collection('Users').doc(uid).set({
“电子邮件”:电话号码,
“用户名”:“Deneme用户”,
“uid”:uid,
“userPhotoUrl”:
"https://kulisvar.com/wp-content/uploads/2019/11/sagopa-kajmer-696x465.jpg"
});
}
导航器。更换(
context,materialpage(builder:(context)=>HomePage());
});
},

添加用户创建前等待功能

   await FirebaseFirestore.instance.collection('Users').doc(uid).set({
                  'email': phoneNumber,
                  'username': "Deneme User",
                  'uid': uid,
                  'userPhotoUrl':
                      "https://kulisvar.com/wp-content/uploads/2019/11/sagopa-kajmer-696x465.jpg"
                });

你打印uid了吗?我在下面写了“我的应用程序找不到uid”这意味着什么?当您在调试器中单步执行此代码时,哪一行不符合您的预期?@FrankvanPuffelen是的。Firebase用户id返回null,请更具体一点。在调试器中运行此代码时,您在哪一行确定UID为null?我尝试过,但不起作用,它仍然给出错误,此外,我还尝试更改uid(我的意思是,首先我尝试了final uid=FirebaseAuth.instance.currentUser.uid;这个,然后这个:value.user.uid;我还添加了wait,但仍然存在相同的问题在哪一行出现错误,是否打印了uid?[错误:flatter/lib/ui/ui\u dart\u state.cc(199)]未处理的异常:空值E/flatter(18016)上使用的空检查运算符:#0 UserInfo.uid包:firebase_auth_platform_interface/src/user_info.dart:52 E/flatter(18016):#1 UserInfo.toString包:firebase_auth_platform_interface/src/user_info.dart:57此处还有uid/firebaseaauth(18016):通知id令牌侦听器有关用户的信息(gBHatfnub1fouPv342CU3MgthRt1)。