我是Flutter的新手,我正尝试将Cloud Firestore的一些数据添加到Flutter中的列表中,但是遇到了问题。我尝试添加该元素,但是执行后,该元素不存在。它也不抛出异常或任何异常。也许其他人对我有一些建议!
我尝试更改列表的类型(从Cloud Firestore捕获文档而不是doc中的数据,这是相同的问题),我还调试了我试图存储的数据以确保它存在。我已经完成了基本的故障排除工作,例如还运行了Flutter Clean。我正在使用最新版本的Flutter。
Firestore db = firestore();
List<String> getString() {
var dataList = new List<String>();
db.collection('Users').get().then((querySnapshot) {
querySnapshot.forEach((doc) {
dataList.add(doc.get('First name'));
});
});
debugPrint(dataList.first);
return dataList;
该列表为空,尽管该列表应包含此Cloud Firestore文档上的“名字”字段。再次验证数据确实存在,并在调用debugPrint时进行打印。
答案 0 :(得分:3)
<td >
@if(isset($student->name))
{{ $student->name }}
@else
@lang('NA')
@endif
</td>
是一个异步函数,因此db.collection('Users').get()
在Firestore结束之前执行,因为您的数组返回空。
如果您尝试过:
debugPrint(dataList.first);
您将看到您的数据。
您可以使用db.collection('Users').get().then((querySnapshot) {
querySnapshot.forEach((doc) {
dataList.add(doc.get('First name'));
});
debugPrint(dataList.first);
});
等待调用完成,因此必须返回一个await
并在函数声明中使用Future
关键字。您必须了解抖动异步功能(Async Flutter)的概念。因此,下面的代码可以解决您的问题。
async