buildURLWithQueryParameters function

String buildURLWithQueryParameters(
  1. String url,
  2. Map<String, String?> parameters, {
  3. bool removeFragment = false,
})

Builds an URL with Query parameters adding the map parameters to current Query parameters.

removeFragment If true will remove URL fragment.

Implementation

String buildURLWithQueryParameters(
  String url,
  Map<String, String?> parameters, {
  bool removeFragment = false,
}) {
  if (parameters.isEmpty) return url;

  var uri = Uri.parse(url);

  // `Object?`: a `String`, a `List<String>` (a repeated parameter of [url])
  // or `null` (a parameter without value).
  Map<String, Object?> queryParameters;

  if (uri.query.isEmpty) {
    queryParameters = parameters;
  } else {
    queryParameters = Map<String, Object?>.from(_queryParametersOf(uri))
      ..addAll(parameters);
  }

  var fragment = uri.fragment;

  return _uriWith(
    uri,
    queryParameters: queryParameters,
    fragment: removeFragment || fragment.isEmpty ? null : fragment,
  ).toString();
}