向列表添加元素
Issue adding element to list
我是 Flutter 的新手,我正在尝试将 Cloud Firestore 中的一些数据添加到 Flutter 中的列表,但遇到了问题。我尝试添加该元素,但执行后该元素不存在。它也不会抛出异常或任何东西。也许其他人对我有一些建议!
我已经尝试更改列表类型(从 Cloud Firestore 捕获文档而不是文档中的数据,同样的问题),我还调试打印了我尝试存储的数据以确保它存在,确实如此.我也完成了基本的故障排除,例如 运行 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 文档中的 "First name" 字段。再次验证数据确实存在并在调用 debugPrint 时打印。
db.collection('Users').get()
是一个异步函数,所以 debugPrint(dataList.first);
在你的 firestores get 结束之前执行,因为你的数组 return 是空的。
如果你尝试一下:
db.collection('Users').get().then((querySnapshot) {
querySnapshot.forEach((doc) {
dataList.add(doc.get('First name'));
});
debugPrint(dataList.first);
});
您将看到您的数据。
您可以使用await
等待调用完成,因此您必须return一个Future
并在函数声明中使用async
关键字。这是你必须知道的 flutter async 函数的概念(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;
}
我是 Flutter 的新手,我正在尝试将 Cloud Firestore 中的一些数据添加到 Flutter 中的列表,但遇到了问题。我尝试添加该元素,但执行后该元素不存在。它也不会抛出异常或任何东西。也许其他人对我有一些建议!
我已经尝试更改列表类型(从 Cloud Firestore 捕获文档而不是文档中的数据,同样的问题),我还调试打印了我尝试存储的数据以确保它存在,确实如此.我也完成了基本的故障排除,例如 运行 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 文档中的 "First name" 字段。再次验证数据确实存在并在调用 debugPrint 时打印。
db.collection('Users').get()
是一个异步函数,所以 debugPrint(dataList.first);
在你的 firestores get 结束之前执行,因为你的数组 return 是空的。
如果你尝试一下:
db.collection('Users').get().then((querySnapshot) {
querySnapshot.forEach((doc) {
dataList.add(doc.get('First name'));
});
debugPrint(dataList.first);
});
您将看到您的数据。
您可以使用await
等待调用完成,因此您必须return一个Future
并在函数声明中使用async
关键字。这是你必须知道的 flutter async 函数的概念(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;
}