autocomplete method

Future<PlacesAutocompleteResponse> autocomplete(
  1. String input, {
  2. String? sessionToken,
  3. num? offset,
  4. Location? origin,
  5. Location? location,
  6. num? radius,
  7. String? language,
  8. List<String> types = const [],
  9. List<Component> components = const [],
  10. bool strictBounds = false,
  11. String? region,
})

Implementation

Future<PlacesAutocompleteResponse> autocomplete(
  String input, {
  String? sessionToken,
  num? offset,
  Location? origin,
  Location? location,
  num? radius,
  String? language,
  List<String> types = const [],
  List<Component> components = const [],
  bool strictBounds = false,
  String? region,
}) async {

  // 2. body JSON
  final body = {
    'input': input,
    if (language != null) 'languageCode': language,
    if (region != null) 'regionCode': region,
    /// if (offset != null) 'offset': offset,
    if (sessionToken != null) 'sessionToken': sessionToken,
    if (location != null && radius != null)
      'locationBias': {
        'circle': {
          'center': {'latitude': location.latitude, 'longitude': location.longitude},
          'radius': radius.toDouble(),
        },
      },
    if (types.isNotEmpty) 'types': types,
  };

  // 3. headers
  final headers = {
    'Content-Type': 'application/json',
    if (apiKey != null) 'X-Goog-Api-Key': apiKey!,
    ...?apiHeaders,
  };

  // 4. POST
  final res = await doPost(url.toString(), jsonEncode(body), headers: headers);

  // 5. adapta respuesta nueva a tu DTO viejo
  return _decodeAutocompleteResponseNew(res);
}