firebase - 在 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() 来尝试显示已登录用户的电子邮件,但我一直显示“未来实例”。
有什么我在这里忽略的吗?我已经尝试了我能想到的所有可能的黑客攻击。
谢谢。
解决方案
由于您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...")
}
}
)
推荐阅读
- probability - 从平均值数组计算数组长度?
- php - WP Mail SMTP 版本 1.5.1 不发送测试邮件
- php - 为什么网站仅在类别页面中显示“网站遇到技术问题”错误?
- python - 从导航工具栏以交互方式编辑 python matplotlib vlines (LineCollection) 的属性
- python - 如何按值删除列表的多个元素?
- flutter - 如何将命令行参数从颤振传递到“发布升级”
- python - 使用 torch.utils.data 的数据集和数据加载器加载数据时出错。TypeError:“类型”类型的对象没有 len()
- android - Gigya Android 在登录时不会进入挂起注册回调
- node.js - 如何删除一个没有集合名称的文档?
- php - Android 值未插入到我的 mysql 数据库中