buildPlacesAutocompleteUri function

  1. @visibleForTesting
Uri buildPlacesAutocompleteUri({
  1. required String input,
  2. LocationData? center,
  3. int? proximityRadiusMeters,
  4. List<String>? countryFilter,
})

Builds the Google Places autocomplete proxy URL with encoded query parameters so user-controlled input cannot inject additional &key=value pairs.

Implementation

@visibleForTesting
Uri buildPlacesAutocompleteUri({
  required String input,
  LocationData? center,
  int? proximityRadiusMeters,
  List<String>? countryFilter,
}) {
  final queryParameters = <String, String>{'input': input};
  if (center != null) {
    final radius = proximityRadiusMeters ?? 20000;
    queryParameters['locationbias'] =
        'circle:$radius@${center.latitude},${center.longitude}';
  }
  if (countryFilter != null && countryFilter.isNotEmpty) {
    queryParameters['components'] =
        countryFilter.map((code) => 'country:$code').join('|');
  }
  return Uri.https(_placesAutocompleteHost, '/', queryParameters);
}