firebase - 如何从 Flutter 中的 firebase 实时数据库中检索当前用户名
问题描述
我想从firebase的实时数据库中获取当前登录的用户名。我存储了注册用户的信息。我使用了 Future Builder,它也在终端上打印名称,但我无法在导航抽屉上显示用户名。由于我是 Flutter 的新手,请帮助我找出哪里做错了。先感谢您!
功能代码:
Future<String> getUsername() async {
final ref = FirebaseDatabase.instance.reference();
User cuser = await firebaseAuth.currentUser;
ref.child('User_data').child(cuser.uid).once().then((DataSnapshot snap) {
final String userName = snap.value['name'].toString();
print(userName);
return userName;
});
}
我使用过Builder的代码:
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
FutureBuilder<String>(
future: getUsername(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(
snapshot.data,
style: TextStyle(
fontFamily: 'Montserrat',
fontSize: 13,
color: const Color(0xff000000),
fontWeight: FontWeight.w700,
),
textAlign: TextAlign.left,
);
} else {
return Text(
"Loading data...",
style: TextStyle(
fontFamily: 'Montserrat',
fontSize: 13,
color: const Color(0xff000000),
fontWeight: FontWeight.w700,
),
textAlign: TextAlign.left,
);
}
},
),
我的屏幕图片:
我存储信息的数据库:
我想从数据库中获取第二个用户名:Hania Salman
解决方案
您没有从 getUsername() 函数返回用户名。您编写的返回用户名是针对 then() 内部的函数,而不是针对 getUsername()。所以应该是这样的
Future<String> getUsername() async {
final ref = FirebaseDatabase.instance.reference();
User cuser = await firebaseAuth.currentUser;
return ref.child('User_data').child(cuser.uid).once().then((DataSnapshot snap) {
final String userName = snap.value['name'].toString();
print(userName);
return userName;
});
}
推荐阅读
- python-3.x - Python 3 OOPS 继承
- typescript - 如何在 react native 中导入包含样式的文件?
- javascript - 为什么它在rails + javascript上逐个字母而不是全字符串ruby
- c# - 如何使用 Win32 API 或 Windows API 代码包在 C# 中检索在 Windows 10 上显示为小且打开的通用文件夹图标?
- python - tkinter 中同一个按钮的多个实例
- system-verilog - systemverilog:tri0 vs pulldown - 有什么区别吗?
- ios - 快速关闭的通用 UIView 初始化程序
- javascript - 如何根据月份显示api结果
- angular - 为什么 TypeScript 会抛出错误:TS2339:“EventTarget”类型上不存在属性“错误”
- angular - 如何在此路由路径上进行路由?