【发布时间】:2021-07-31 00:30:31
【问题描述】:
我正在使用 firebase 电子邮件和密码身份验证来登录/注册用户,当创建用户时,会使用 id 创建一个包含额外信息(包括:用户名、电子邮件、头像、电话...的个人资料信息)的新文档该文件是firebaseAuth.currentUser.uid。当用户使用他的帐户登录时,包含AppBar() 的主页应该显示用户的全名,为此我在auth_services.dart 中创建了一个方法,该方法检索当前用户的文档并返回一个对象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');
}
},
));
}
}
【问题讨论】:
-
尝试打印 UID 并查看它是否真的获得了一个 id,同时显示您如何将用户保存到 firestore
-
@griffinsyes 它确实获得了 UID,我已经上传了我的 firestore 用户样本
标签: firebase flutter dart google-cloud-firestore