Flutter和Firestore出现问题,程序试图处理尚未检索到的数据



程序尝试处理尚未检索到的数据。我做了大量的展示来验证这确实发生了。

这是我在Stateless小部件中的代码:……

Print(“before calling getDocs()”)
getDocs(); // retrieves data from Firestore
Print(“after calling getDocs()”)

处理getDocs()函数检索到的数据……

getDocs()在任何类或Widget 之外定义

void getDocs() async {
print("******inside getDocs() start*****************");
await FirebaseFirestore.instance.collection('Spanish').get().then((snapshot) {
print("********inside getDocs() 1"); 
....
print("******inside getDocs() end*****************");

这就是我在日志上看到的:

before calling getDocs()
******inside getDocs() start*****************
******inside getDocs() end*****************
after calling getDocs()
********inside getDocs() 1

结果是一个错误-程序试图处理尚未检索到的数据。getDocs()中的另一个显示显示数据已正确接收。问题-当数据还不可用时,如何防止程序处理数据?

由于getDocs被声明为async函数,如果您想等到它完成后再继续处理,则需要用await调用它:

因此:

await getDocs();

如果您所在的环境中不能使用await,则可以附加一个then处理程序:

getDocs().then(() {
... do whatever needs to happen after getDocs() is done here
})

最新更新