我正在尝试使用DocumentSnapshot检索用户数据。但是,由于我创建的示例指向null,我收到了一个级联错误。因此,我尝试在initState方法中调用方法getUserProfileData,以查看它是否可以为我的DocumentSnapshot示例分配值,但我仍然收到该错误。请任何人提供帮助。
//DocumentSnapshot instance that is null
DocumentSnapshot? userDocument;
getUserProfileData() {
FirebaseFirestore.instance
.collection('users')
.doc(FirebaseAuth.instance.currentUser!.uid)
.snapshots()
.listen((event) {
userDocument = event;
});
}
@override
void initState() {
getUserProfileData();
//This is where the castError occurs because userDocument is null
nameController.text = userDocument!.get('name');
userNameController.text = userDocument!.get('username');
try {
descriptionController.text = userDocument!.get('description');
} catch (e) {
descriptionController.text = '';
}
try {
followers = userDocument!.get('followers').length;
} catch (e) {
followers = 0;
}
try {
following = userDocument!.get('following').length;
} catch (e) {
following = 0;
}
}
2条答案
按热度按时间7lrncoxx1#
最好使用StreamBuilder进行首次快照。
还可以绕过错误,如
drnojrws2#
尝试对
getUserProfileData()
函数使用async/awaitAsync确定一个方法将是异步的,也就是说,它不会立即返回一些东西,因此应用程序可以在处理未完成时继续执行其他任务。
await用于确定应用程序在继续执行之前必须等待函数的响应,这一点非常重要,因为有时候一个函数依赖于另一个函数的返回。