buildPlacesAutocompleteUri function
Uri
buildPlacesAutocompleteUri({
- required String input,
- LocationData? center,
- int? proximityRadiusMeters,
- 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);
}