如何从Flutter中的Firebase Auth获取用户ID?
问题内容:
我想通过将用户ID分配给文档作为字段来在Firestore中保存与用户相关的数据。
如何从Firebase身份验证获取用户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),
);
}
问题答案:
_userId
为null,因为在返回的Future
FirebaseAuth.instance.currentUser()
完成之前正在构建窗口小部件。一旦完成,为时已晚,小部件也不会更新。一种使用它的方法是使用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...');
}
},
),
);
}