autocomplete method

Future<PlacesAutocompleteResponse> autocomplete({
  1. required String input,
  2. PlaceAutocompleteRequestOptions? options,
})

Implementation

Future<PlacesAutocompleteResponse> autocomplete({
  required String input,
  PlaceAutocompleteRequestOptions? options,
}) async {
  if (input == "") {
    throw ArgumentError.value(input, "Cannot search an empty string");
  }

  final requestURL = Uri.parse(
      "https://maps.googleapis.com/maps/api/place/autocomplete/json?input=$input${options ?? ""}&key=$apiKey");

  // Making the request
  final response = await client.get(requestURL);

  if (response.statusCode == 200) {
    final placeAutocompleteResponseMap =
        json.decode(response.body) as Map<String, dynamic>;
    final placeAutocompleteResponse =
        PlacesAutocompleteResponse.fromJson(placeAutocompleteResponseMap);

    if (placeAutocompleteResponse.status != PlacesAutocompleteStatus.OK) {
      throw Exception(
          "${handlePlacesAutocompleteStatus(placeAutocompleteResponse.status)} ($requestURL): ${placeAutocompleteResponse.errorMessage}");
    }

    return placeAutocompleteResponse;
  } else {
    throw const HttpException("Http Places autocomplete API request failed");
  }
}