firebase - Flutter 在另一个页面上获取用户 ID 并将其转换为 String ("type 'Future' 不是类型 'String' 的子类型")
问题描述
我需要从我的个人资料页面上的当前登录用户获取用户 ID。我遵循了 Youtube 上的网络忍者教程。这是我目前的方式
final FirebaseAuth _auth = FirebaseAuth.instance;
getCurrentUser() async {
final FirebaseUser user = await _auth.currentUser();
final uid = user.uid;
// Similarly we can get email as well
//final uemail = user.email;
print(uid);
//print(uemail);
}
但是如果我在我的 Scaffold 中调用它,我会得到这个输出
“未来”类型不是“字符串”类型的子类型
和 Uid。如何将其转换为字符串?还是有更优雅的方式?
谢谢!
解决方案
你可以试着把它放在一个FutureBuilder
FutureBuilder<String>(
future: () async {
FirebaseAuth auth = FirebaseAuth.instance;
FirebaseUser user = await auth.currentUser();
String uid = user.uid.toString();
return uid;
}(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data); // <- Customize your widget here
} else {
return CircularProgressIndicator();
}
},
)
推荐阅读
- javascript - Promise all with inner function to be executed
- asp.net-core - Asp.net 核心文件下载损坏
- algorithm - n+n/2+n/3+...+n/n 之和的公式
- java - “静态工厂返回的对象不需要存在”是什么意思?
- java - 在嵌套的 for 循环中使用 ArrayList 的 contains() 方法是否是一个不错的选择?
- arduino - 从汽车的 ECU ABS 轮速传感器读取数据
- android - 在 Google 电子表格中获取数据
- c++ - 将 char * 转换为我的自定义类(MyString)对象时出错
- java - 为什么在以可变对象为标识的并行流中调用reduce方法不会保留结果中的顺序?
- node.js - 什么是 node_modules_bak?