我试图将通过http调用收到的地图中的信息添加到Dart中的对象列表。例如,对象列表是具有toollocation属性的Tools:
Tool(
{this.make,
this.model,
this.description,
this.tooltype,
this.toollocation,
this.paymenttype,
this.userid});
我还使用Google距离矩阵api来收集该工具与用户的距离。
Future<DistanceMatrix> fetchDistances() async {
await getlocation();
latlongdetails = position['latitude'].toString() +
',' +
position['longitude'].toString();
print(latlongdetails);
print('still running');
final apiresponsepc = await http
.get(
'https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=$latlongdetails&destinations=$postcodes&key=xxx');
distanceMatrix =
new DistanceMatrix.fromJson(json.decode(apiresponsepc.body));
return distanceMatrix;
}
过去我一直在做的事情是称呼未来,一旦我返回了该工具的原始结果,就获得了距离。但是,我希望能够按距离对工具结果进行排序,因此我需要遍历列表中的每个工具并为每个工具添加距离。
到目前为止,我一直在工具列表上尝试foreach循环:
finalresults.forEach((tool){ tool.toollocation = distanceMatrix.elements[0].distance.text;});
,但是很明显,这只会将第一个距离测量值添加到每个工具中。
有什么方法可以迭代每个工具,然后再添加距离矩阵图的距离?每个距离将与列表中的每个工具顺序排列。
答案 0 :(得分:0)
我认为这就是你想要做的
finalResults.forEach((tool) {
distanceMatrix.elements.forEach((element){
tool.toolLocation = element.distance.text;
});
});
如果elements
也是List
,则可以使用foreach
语法对其进行迭代。
答案 1 :(得分:0)
我已使用以下代码解决了这个问题:
int number = 0;
finalresults.forEach((tool) {
tool.toollocation = distanceMatrix.elements[number].distance.text;
number = number + 1;
});