getRouteBetweenCoordinates method

Future<List<PolylineResult>> getRouteBetweenCoordinates({
  1. required PolylineRequest request,
})

Get the encoded string from google directions api

Implementation

Future<List<PolylineResult>> getRouteBetweenCoordinates(
    {required PolylineRequest request}) async {
  List<PolylineResult> results = [];

  var response = await http.get(request.toUri());
  if (response.statusCode == 200) {
    var parsedJson = json.decode(response.body);
    if (parsedJson["status"]?.toLowerCase() == STATUS_OK &&
        parsedJson["routes"] != null &&
        parsedJson["routes"].isNotEmpty) {
      List<dynamic> routeList = parsedJson["routes"];
      for (var route in routeList) {
        results.add(PolylineResult(
            points:
                PolylineDecoder.run(route["overview_polyline"]["points"]),
            errorMessage: "",
            status: parsedJson["status"],
            distance: route["legs"][0]["distance"]["text"],
            distanceValue: route["legs"][0]["distance"]["value"],
            overviewPolyline: route["overview_polyline"]["points"],
            durationValue: route["legs"][0]["duration"]["value"],
            endAddress: route["legs"][0]['end_address'],
            startAddress: route["legs"][0]['start_address'],
            duration: route["legs"][0]["duration"]["text"]));
      }
    } else {
      throw Exception("Unable to get route: Response ---> ${parsedJson["status"]} ");
    }
  }
  return results;
}