在列表中添加元素

杰克·奎因

我是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时进行打印。

奥古斯托

db.collection('Users').get()是一个异步功能,所以debugPrint(dataList.first);在你firestores年底得到执行,因为你的阵列返回空。

如果您尝试:

db.collection('Users').get().then((querySnapshot) {
  querySnapshot.forEach((doc) {
    dataList.add(doc.get('First name'));
  });
  debugPrint(dataList.first);
});

您将看到您的数据。

您可以await用来等待调用完成,因此必须返回aFutureasync在函数声明中使用关键字。这是您必须了解的抖动异步功能(Async Flutter)的概念。因此,下面的代码可以解决您的问题。

Firestore db = firestore();

Future <List<String>> getString() async {

var dataList = new List<String>();

var result = await db.collection('Users').get();
result.forEach((doc) {
    dataList.add(doc.get('First name'));
  });

debugPrint(dataList.first);

return dataList;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章