directions method

Future<Response<DirectionsResponse>> directions(
  1. String destination,
  2. String origin, {
  3. num? arrivalTime,
  4. num? departureTime,
  5. bool? alternatives,
  6. String? avoid,
  7. String? units,
  8. String? waypoints,
  9. String? language,
  10. TravelMode? mode,
  11. String? region,
  12. String? trafficModel,
  13. String? transitMode,
  14. String? transitRoutingPreference,
  15. CancelToken? cancelToken,
  16. Map<String, dynamic>? headers,
  17. Map<String, dynamic>? extra,
  18. ValidateStatus? validateStatus,
  19. ProgressCallback? onSendProgress,
  20. ProgressCallback? onReceiveProgress,
})

The Directions API is a web service that uses an HTTP request to return JSON or XML-formatted directions between locations. You can receive directions for several modes of transportation, such as transit, driving, walking, or cycling.

Implementation

Future<Response<DirectionsResponse>> directions(
  String destination,
  String origin, {
  num? arrivalTime,
  num? departureTime,
  bool? alternatives,
  String? avoid,
  String? units,
  String? waypoints,
  String? language,
  TravelMode? mode,
  String? region,
  String? trafficModel,
  String? transitMode,
  String? transitRoutingPreference,
  CancelToken? cancelToken,
  Map<String, dynamic>? headers,
  Map<String, dynamic>? extra,
  ValidateStatus? validateStatus,
  ProgressCallback? onSendProgress,
  ProgressCallback? onReceiveProgress,
}) async {
  final _request = RequestOptions(
    path: r'/maps/api/directions/json',
    method: 'GET',
    headers: <String, dynamic>{
      ...?headers,
    },
    queryParameters: <String, dynamic>{
      if (arrivalTime != null) r'arrival_time': arrivalTime,
      if (departureTime != null) r'departure_time': departureTime,
      if (alternatives != null) r'alternatives': alternatives,
      if (avoid != null) r'avoid': avoid,
      r'destination': destination,
      r'origin': origin,
      if (units != null) r'units': units,
      if (waypoints != null) r'waypoints': waypoints,
      if (language != null) r'language': language,
      if (mode != null) r'mode': mode,
      if (region != null) r'region': region,
      if (trafficModel != null) r'traffic_model': trafficModel,
      if (transitMode != null) r'transit_mode': transitMode,
      if (transitRoutingPreference != null)
        r'transit_routing_preference': transitRoutingPreference,
    },
    extra: <String, dynamic>{
      'secure': <Map<String, String>>[
        {
          'type': 'apiKey',
          'name': 'ApiKeyAuth',
          'keyName': 'key',
          'where': 'query',
        },
      ],
      ...?extra,
    },
    validateStatus: validateStatus,
    contentType: 'application/json',
    cancelToken: cancelToken,
    onSendProgress: onSendProgress,
    onReceiveProgress: onReceiveProgress,
  );

  dynamic _bodyData;

  final _response = await _dio.request<dynamic>(
    _request.path,
    data: _bodyData,
    queryParameters: _request.queryParameters,
    cancelToken: _request.cancelToken,
    options: Options(
      method: _request.method,
      sendTimeout: _request.sendTimeout,
      receiveTimeout: _request.receiveTimeout,
      extra: _request.extra,
      headers: _request.headers,
      responseType: _request.responseType,
      contentType: _request.contentType,
      validateStatus: _request.validateStatus,
      receiveDataWhenStatusError: _request.receiveDataWhenStatusError,
      followRedirects: _request.followRedirects,
      maxRedirects: _request.maxRedirects,
      requestEncoder: _request.requestEncoder,
      listFormat: _request.listFormat,
    ),
    onReceiveProgress: _request.onReceiveProgress,
    onSendProgress: _request.onSendProgress,
  );

  const _responseType = FullType(DirectionsResponse);
  final _responseData = _serializers.deserialize(
    _response.data,
    specifiedType: _responseType,
  ) as DirectionsResponse?;

  return Response<DirectionsResponse>(
    data: _responseData,
    headers: _response.headers,
    isRedirect: _response.isRedirect,
    requestOptions: _response.requestOptions,
    redirects: _response.redirects,
    statusCode: _response.statusCode,
    statusMessage: _response.statusMessage,
    extra: _response.extra,
  );
}