首页 > 解决方案 > 在 Flutter 中从 Firebase 检索用户电子邮件

问题描述

在我处理登录、登录、注销身份验证的 AuthProvider 类中,我创建了 2 个函数,它们像这样返回未来字符串

  Future<String> currentUser() async {
    FirebaseUser user = await _auth.currentUser();
    return user.uid;
  }


  Future<String> getCurrentUserEmail() async {
    FirebaseUser user = await _auth.currentUser();
    final String email = user.email.toString();
  //  print(email);
    return email;
  }

在我的菜单屏幕中,我想在文本字段中显示我当前登录的用户电子邮件,我将其称为如下。

    UserAccountsDrawerHeader(
      accountName: Text('Brad Pitt'),
      accountEmail: Text(
          '${AuthProvider.of(context).auth.getCurrentUserEmail()}'),

我曾尝试同时使用 currenUser() 和 getCurrentUserEmail() 来尝试显示已登录用户的电子邮件,但我一直显示“未来实例”。

有什么我在这里忽略的吗?我已经尝试了我能想到的所有可能的黑客攻击。

谢谢。

标签: firebaseflutterdartgoogle-cloud-firestorefirebase-authentication

解决方案


由于您getCurrentUserEmail返回 a Future,因此您需要使用 aFutureBuilder在您的构建方法中使用它。

accountEmail: FutureBuilder<String>(
  future: AuthProvider.of(context).auth.getCurrentUserEmail(),
  builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
    if (snapshot.hasData) {
      return Text(snapshot.data)
    }
    else {
      return Text("Loading user data...")
    }

  }
)

推荐阅读