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

Posted

技术标签:

【中文标题】如何在 Flutter 中从 Firebase Auth 获取用户 ID?【英文标题】:How to get user id from Firebase Auth in Flutter? 【发布时间】:2018-09-24 10:32:38 【问题描述】:

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

【问题讨论】:

【参考方案1】:

_userId 为空,因为在 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...');
        
      ,
    ),
  );

【讨论】:

以上是关于如何在 Flutter 中从 Firebase Auth 获取用户 ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何在flutter中从firebase获取数据

如何在 Flutter 中从 Firebase 获取当前用户 ID

如何在flutter中从firebase实时数据库中获取数据?

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

在 Flutter 中从 Firebase 读取数组 [重复]

在 Flutter 中从 Firebase 检索用户电子邮件