location method

Uri location({
  1. Map<String, String> parameters = const {},
  2. Map<String, dynamic>? queryParameters,
  3. String? fragment,
})

Generates an encoded URI and rejects missing or unused parameters.

Implementation

Uri location({
  Map<String, String> parameters = const {},
  Map<String, dynamic>? queryParameters,
  String? fragment,
}) {
  if (parameters.length != this.parameters.length ||
      !this.parameters.every(parameters.containsKey) ||
      parameters.values.any((value) => value.isEmpty)) {
    final expected = this.parameters;
    throw ArgumentError('Expected nonempty parameters: $expected');
  }
  if (_segments.isEmpty) {
    return Uri(
        path: '/', queryParameters: queryParameters, fragment: fragment);
  }
  return Uri(
    pathSegments: [
      '',
      for (final segment in _segments)
        segment.startsWith(':') ? parameters[segment.substring(1)]! : segment,
    ],
    queryParameters: queryParameters,
    fragment: fragment,
  );
}