Объедините список объектов с информацией с карты Дарт - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь добавить информацию с карты, полученной через вызов http, в список объектов в Dart.Например, список объектов - это Инструменты, обладающие свойством toollocation:

Tool(
      {this.make,
      this.model,
      this.description,
      this.tooltype,
      this.toollocation,
      this.paymenttype,
      this.userid});

Я также использую API матрицы расстояний Google для определения расстояния от пользователя до инструмента.

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;});

, но очевидно, что это только добавит первое измерение расстояния к каждому из инструментов.

Можно ли как-нибудь перебрать каждый инструмент, а затем добавить расстояние от карты матрицы расстояний?Каждое расстояние будет последовательно с каждым инструментом в списке.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Я решил это с помощью следующего кода:

int number = 0;
    finalresults.forEach((tool) {
      tool.toollocation = distanceMatrix.elements[number].distance.text;
      number = number + 1;
    });
0 голосов
/ 12 декабря 2018

Я думаю, это то, что вы хотели сделать

finalResults.forEach((tool) {
  distanceMatrix.elements.forEach((element){
    tool.toolLocation = element.distance.text;
  });
});

Если elements также является List, то вы можете использовать синтаксис foreach для его повторения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...