一尘不染

如何从Flutter中的Firebase Auth获取用户ID?

flutter

我想通过将用户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),
    );
  }

阅读 216

收藏
2020-08-13

共1个答案

一尘不染

_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...');
        }
      },
    ),
  );
}
2020-08-13