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

时间:2018-04-14 03:28:29

标签: firebase dart firebase-authentication google-cloud-firestore flutter

我想通过将用户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 个答案:

答案 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...');
        }
      },
    ),
  );
}