我想通过将用户ID作为字段分配给文档来保存Firestore中与用户相关的数据。
如何从Firebase Auth获取用户ID?
或者有更好的方法在Firestore中存储用户数据吗?
我无法以这种方式从Firebase Auth获取用户ID(Text(_userId)返回_userId == null错误):
String _userId;
...
@override
Widget build(BuildContext context) {
FirebaseAuth.instance.currentUser().then((user) {
_userId = user.uid;
});
return new Scaffold(
appBar: new AppBar(
title: new Text("App bar"),
),
body: new Text(_userId),
);
}
答案 0 :(得分:11)
_userId
为null,因为在FirebaseAuth.instance.currentUser()
返回的Future完成之前构建了小部件。一旦它完成它就太晚了,小部件不会更新。使用它的一种方法是使用FutureBuilder
,有点像这样:
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("App bar"),
),
body: FutureBuilder(
future: FirebaseAuth.instance.currentUser(),
builder: (context, AsyncSnapshot<FirebaseUser> snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data.uid);
}
else {
return Text('Loading...');
}
},
),
);
}