用户注册后获取用户UID

时间:2020-07-15 16:23:36

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

如何在用户注册后获取用户UID。我正在尝试使用getCurrentUser方法,但最终总是为null。这是方法:

  String userId;

  @override
  void initState() {
    super.initState();
    getCurrentUser();
  }

  getCurrentUser() async {
    FirebaseUser firebaseUser = await FirebaseAuth.instance.currentUser();
    setState(() {
      userId = firebaseUser.uid;
    });
  }

这是用户要注册时的按钮,用户输入的数据将发送到Firebase。但是userId始终为null。

Container(
                  height: 45.0,
                  width: 270.0,
                  child: RaisedButton(
                    child: Text('SIGN UP'),
                    onPressed: () async {
                      setState(() {
                        showSpinner = true;
                      });
                      try {
                        final newUser =
                            await _auth.createUserWithEmailAndPassword(
                                email: email, password: password);
                        _firestore.collection('UserAccount').add({
                          'uid': userId,
                          'Email Address': email,
                          'Full Name': nama,
                          'Phone Number': phoneNumber,
                        });
                        if (newUser != null) {
                          Navigator.pushNamed(context, HomePage.id);
                        }
                        setState(() {
                          showSpinner = false;
                        });
                      } catch (e) {
                        print(e);
                      }
                    },
                  ),
                ),

如果我尝试使用上面的代码注册,则会出现此错误。

enter image description here

感谢任何试图帮助您的人:(

1 个答案:

答案 0 :(得分:2)

您需要在注册后获得uid

 final newUser =
   await _auth.createUserWithEmailAndPassword(
   email: email, password: password);
 _firestore.collection('UserAccount').add({
                          'uid': newUser.user.uid,
                          'Email Address': email,
                          'Full Name': nama,
                          'Phone Number': phoneNumber,
                        });

newUser应该返回类型AuthResult的值,并且在AuthResult内部它具有类型FirebaseUser的字段,因此可以使用newUser.user.uid


如果要基于用户ID从文档中获取数据,则建议执行以下操作:

 final newUser =
   await _auth.createUserWithEmailAndPassword(
   email: email, password: password);
 _firestore.collection('UserAccount').document(newUser.user.uid).setData({
                          'Email Address': email,
                          'Full Name': nama,
                          'Phone Number': phoneNumber,
                        });