【问题标题】:Flutter can't find the uid, it returns nullFlutter 找不到 uid,它返回 null
【发布时间】:2021-07-22 19:17:14
【问题描述】:

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

【问题讨论】:

  • 你打印了 uid 吗?
  • 我写在下面
  • "我的应用找不到 uid" 这是什么意思?当您在调试器中单步执行此代码时,哪一行没有按照您的预期执行?
  • @FrankvanPuffelen 是的。 Firebase 用户 ID 返回 null,
  • 请更具体。当您在调试器中运行此代码时,您在哪一行确定 UID 为空?

标签: firebase flutter google-cloud-firestore firebase-authentication


【解决方案1】:

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

   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(我的意思是首先我尝试了 final uid = FirebaseAuth.instance.currentUser.uid; 这个,之后这个: value.user.uid; 我也添加了等待,但仍然是同样的问题
  • 您在哪一行出现错误,您打印了 uid 吗?
  • [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] 未处理的异常:空值检查运算符用于空值 E/flutter (18016):#0 UserInfo.uid package:firebase_auth_platform_interface /src/user_info.dart:52 E/flutter (18016): #1 UserInfo.toString package:firebase_auth_platform_interface/src/user_info.dart:57
  • 这里还有 uid D/FirebaseAuth(18016):通知 id 令牌侦听器有关用户 (gBHatfnub1fouPv342CU3MgthRt1)。
猜你喜欢
  • 2021-11-23
  • 2020-08-23
  • 2021-09-28
  • 2020-11-10
  • 2020-07-12
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
相关资源
最近更新 更多