如何在用户注册后获取用户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);
}
},
),
),
如果我尝试使用上面的代码注册,则会出现此错误。
感谢任何试图帮助您的人:(
答案 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,
});