首页 > 解决方案 > Flutter 找不到 uid,它返回 null

问题描述

我的应用找不到 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()));
        });
      },

标签: firebasefluttergoogle-cloud-firestorefirebase-authentication

解决方案


在创建用户功能之前添加等待

   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"
                });

推荐阅读