我想通过将用户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如下所示的代码:
_userId
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...'); } }, ), ); }