Firebase Flatter-Firestore正在向inistate语句上的映射返回空数据
这是我的密码:Firebase Flatter-Firestore正在向inistate语句上的映射返回空数据,firebase,flutter,google-cloud-firestore,setstate,Firebase,Flutter,Google Cloud Firestore,Setstate,这是我的密码: void initState() { likesRef = FirebaseFirestore.instance.collection('likes').doc(currentUser); super.initState(); likesRef.get().then((value) => data = value.data()); postRef = FirebaseFirestore.instance.collection('Products'); } @ov
void initState() {
likesRef = FirebaseFirestore.instance.collection('likes').doc(currentUser);
super.initState();
likesRef.get().then((value) => data = value.data());
postRef = FirebaseFirestore.instance.collection('Products');
}
@override
Widget build(BuildContext context) {
print('data $data');
我获得了空数据,但在firestore中我有数据:
尝试以下操作:
void initState() {
super.initState();
likesRef = FirebaseFirestore.instance.collection('likes').doc(currentUser);
likesRef.get().then((value){
data = value.data();
setState(() {});
});
postRef = FirebaseFirestore.instance.collection('Products');
}
重写时始终在重写时首先调用超级方法,以确保在代码中执行任何其他操作之前调用父类方法。然后,在检索数据后,可以调用
setState
以使用数据值重建小部件树。另一种方法是使用futurebuilder
widget。谢谢Peter的回答,这是工作,但第一次读取时会变为空,有什么想法吗?因为从firebase检索数据是异步完成的,因此,最初使用data=null调用build方法,然后当您调用setstate时,它将使用数据再次构建。检查一下,再次感谢彼得抽出时间!,这是完美的工作!,后来代码没有输入到一些if,因为我在firebase的一些字段开头有空格,