[英]How to get current user's document id in Swift using Firebase Firestore?
[英]Flutter - Get the current user's document in firebase firestore
我正在使用 firebase email 和密码验证来登录/注册用户,当用户创建一个带有额外信息的新文档(配置文件信息包括:用户名,Z0C83F57C786A0B4A39EFAB23731C7EBC,该文档是使用该头像创建的...是firebaseAuth.currentUser.uid
。 当用户使用他的帐户登录时,包含AppBar()
的主页应该显示用户的全名,为此我在我的auth_services.dart
中创建了一个方法,该方法检索当前用户的文档并返回 object EndUser
我得到了大部分完成但
问题是当我尝试读取检索到的数据时,它返回 null
这是根据用户的uid
获取用户文档的方法:
Future<DocumentSnapshot> fetchCurrentUser(String uuid) async {
return await firebaseFirestore.collection('users').doc(uuid).get();
}
这是我应该读取数据的main_page.dart
:
class MainScreen extends StatefulWidget {
@override
_MainScreenState createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Header(), //where I am supposed to display data
),
//body: ...
);
}
}
//this is the header widget
class Header extends StatefulWidget {
@override
_HeaderState createState() => _HeaderState();
}
class _HeaderState extends State<Header> {
@override
Widget build(BuildContext context) {
return Container(
child: FutureBuilder<DocumentSnapshot>(
future: _autheService.fetchCurrentUser(firebaseAuth.currentUser.uid),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Row(
children: [
Text(snapshot.data.data()['fullname'],),
],
);
} else {
print("err is: " + snapshot.data.data()); //null
return Text('empty');
}
},
));
}
}
我尝试了以下方法并能够使其正常工作:
FutureBuilder<DocumentSnapshot>(
future: _autheService.fetchCurrentUser(firebaseAuth.currentUser.uid),
//added AsyncSnapshot<DocumentSnapshot>
builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
//...
}
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.