我有一个文档ID列表,我想从Firestore中获取这些文档的数据,并使用FutureBuilder进行显示。
contestList = [awebnmsdfjkeeer23,324cdas4asdf, 34sdfasgadsg]
Future<void> fetchUsergameData() async {
contestList.forEach((element) async{
await Firestore.instance.collection('LiveGames').document('$element')
.get().then((dss) {
if(dss.exists) {
tempgame.add(dss.data["GameData"]);
temproom.add(dss.data["Room"]);
temptitle.add(dss.data["Title"]);
temp = tempgame + temproom + temptitle;
joinedContests.add(temp);
}
}).then((value) => {});
});
print(joinedContests);
}
}
我已经使用上面的函数来获取数据并尝试将其存储在列表中,就像列表中的一个文档数据一样。但是我正在获取数据的空白列表。如何获取整个文档并在Flutter中使用FutureBuilder显示它
答案 0 :(得分:0)
您的代码似乎有多个不同的问题:
contestList
包含无效的关键字。 324cdas4asdf
和34sdfasgadsg
不是有效的变量名称,因为它们都以数字开头,该数字不是有效的变量名称。如果应该使用它们作为您要检索的ID,则必须用"
括起来,这将使它们成为字符串。'$element'
来访问文档,就好像它是一个bash变量一样,但是那里有两个问题:这样做不是那样,也不需要这样做。 element
已将值保存为字符串,因此只需按原样访问即可。then
,而第二次不执行任何操作。这不应该是一个问题,但是它什么也没做,我可以省略。在下面,您将看到修改后的所有错误的代码的编辑版本。
contestList = ["awebnmsdfjkeeer23", "324cdas4asdf", "34sdfasgadsg"]
Future<void> fetchUsergameData() async {
contestList.forEach((element) async{
await Firestore.instance.collection('LiveGames').document(element)
.get().then((dss) {
if(dss.exists) {
tempgame.add(dss.data["GameData"]);
temproom.add(dss.data["Room"]);
temptitle.add(dss.data["Title"]);
temp = tempgame + temproom + temptitle;
joinedContests.add(temp);
}
});
});
print(joinedContests);
}
}
另一方面,tempgame
,temproom
和temptitle
的类型对我们来说还是未知的,但是从访问方式的角度来看,您可能只想执行以下操作:< / p>
tempgame = dss.data["GameData"];
temproom = dss.data["Room"];
temptitle = dss.data["Title"];
temp = tempgame + temproom + temptitle;
joinedContests.add(temp);