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

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

最佳答案

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

https://stackoverflow.com/questions/49827598/

相关文章:

sqlite - 如何在 Flutter 中使用 SQFlite 进行数据库查询

Flutter - InheritedWidget - 处置

android - 如何设置 Flutter 应用的构建和版本号

dart - 在 Flutter 中调用 showTimePicker() 时如何使用 24 小时制

dart - 这个 Dart 错误处理程序有什么问题?

build - 如何在 Flutter 中修复 "Gradle build failed to pr

image - Flutter CircleAvatar backgroundImage没有填满圆圈

firebase - Flutter如何使用Future返回值作为变量

flutter - 控制和禁用 flutter 中的下拉按钮?

listview - 如何通过 Flutter 中的 RaisedButton 传递/绑定(bind