uri property

Uri get uri

Implementation

Uri get uri {
  final parsed = Uri.parse('$baseUrl/$path').normalizePath();

  /// The explicit [query] is applied last so it wins over any parameters
  /// already embedded in [path].
  final merged = <String, String>{
    ...parsed.queryParameters,
    ...query.map((key, value) => MapEntry(key, '$value')),
  };

  return parsed.replace(
    pathSegments: parsed.pathSegments
        .where((element) => element.isNotEmpty)
        .toList(),
    // Passing an empty map would append a bare '?' to every URL that has no
    // query parameters; null leaves the (empty) query untouched.
    queryParameters: merged.isEmpty ? null : merged,
  );
}