gpt4 book ai didi

firebase - Flutter - 在 firebase firestore 中获取当前用户的文档

转载 作者:行者123 更新时间:2023-12-05 04:49:58 25 4
gpt4 key购买 nike

我正在使用 firebase 电子邮件和密码 auth 登录/注册用户,当创建用户时,会创建一个包含额外信息的新文档(配置文件信息,包括:用户名、电子邮件、头像、电话...)该文档的名称是 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');
}
},
));
}
}

firebase-firestore 用户: enter image description here

最佳答案

我尝试了以下并且能够让它工作:

FutureBuilder<DocumentSnapshot>(
future: _autheService.fetchCurrentUser(firebaseAuth.currentUser.uid),
//added AsyncSnapshot<DocumentSnapshot>
builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
//...
}
)

关于firebase - Flutter - 在 firebase firestore 中获取当前用户的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67456279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com