用户注册后如何获取用户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);
}
},
),
),
如果我尝试使用上面的代码注册,则会出现此错误。谢谢任何想要帮助的人:(
最佳答案
注册后需要获取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
。如果要基于用户标识从文档中获取数据,则建议执行以下操作:
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,
});
关于firebase - 用户注册后获取用户UID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62919410/