【发布时间】:2021-10-20 09:51:19
【问题描述】:
您好,我想将列表存储到 Firestore。
我正在处理一个项目,在此页面中,我需要选择一些选择(选择是 DocumentID)并将其存储在 List 中,之后我需要从 List 中检索并再次调用 Firestore 以获取基于List 的项目的GeoPoint(List 包含 DocumentID)。然后,由于社区的帮助,我也能够找回它。但现在我只能存储List 的一项,而不是全部。
这是我的代码:
void initRoute(data, dataInt) async{
Firestore.instance.collection('routes').document(inputName).setData({
dataInt:{
"Lat" : data['location'].latitude,
"Lng" : data['location'].longitude
}
});
}
我可以存储,但它只将列表中的第一个项目存储到 Firestore。我怎样才能将它们全部存储到只有 1 个文档中,其中很少有 Map 类似于下图的内容。
还有Map 的名称,我可以根据列表中有多少项目生成它(第一个项目得到 0,第二个项目得到 1,依此类推......)并在存储时添加它?非常感谢您。
编辑:
dataInt 是用来编号的,但我失败得很惨,但仍然不知道如何让它工作。
更新:
我正在从 Firestore 获取所有 List。
首先,我们从这里选择一些:
然后选择后会将名称存储到List
List的使用代码:
List<String> _selectedBusStop = List<String>();
onTap和onLongPress时添加到List的代码
onTap: (){
if(_selectedBusStop.contains(user.data['BusstopName'])){
setState(() {
_selectedBusStop.removeWhere((val) => val == user.data['BusstopName']);
});
}
},
onLongPress: (){
setState(() {
_selectedBusStop.add(user.data['BusstopName']);
});
}
因为列表中只保存了 BusstopName,所以我需要从 Firestore 中再次读取并获取我需要的 GeoPoint。将其保存在Map 中并将其用作Polyline。现在,当我调用setData 时,我目前无法将List 中的所有项目保存到Firestore 中,因为它只能在List 中保存1 个项目并且我想存储全部。
抱歉再次造成误会。真的很抱歉。
更新我可以将列表中的所有项目存储到 Firestore 中
void initRoute(data, dataInt) async{
Firestore.instance.collection('routes').document(inputName).setData({
data['BusstopName']:{
"Lat" : data['location'].latitude,
"Lng" : data['location'].longitude
}
}, merge: true);
}
使用此代码。
【问题讨论】:
标签: flutter google-cloud-firestore