resolveRoutePath function

String resolveRoutePath(
  1. String page, {
  2. Map<String, String>? pathParams,
  3. Map<String, String>? queryParams,
})

Builds a concrete URL from a route template (1.5.0).

  • pathParams values replace :param segments. Pattern (:id(\d+)), optional (:id?) and wildcard (:path*) markers are stripped from the parameter name before lookup. Values are encoded per-segment (a literal / inside a value becomes %2F).
  • queryParams are merged into the query string, preserving any query already present in page.

When pathParams is supplied, required parameters without a value are left as-is. Optional parameters without a value are omitted, together with their '/' or '.' separator.

Implementation

String resolveRoutePath(
  String page, {
  Map<String, String>? pathParams,
  Map<String, String>? queryParams,
}) {
  var resolved = page;

  if (pathParams != null) {
    resolved = RouteTemplate.parse(page).resolve(pathParams);
  }

  if (queryParams != null && queryParams.isNotEmpty) {
    final uri = Uri.parse(resolved);
    resolved = uri.replace(queryParameters: {
      ...uri.queryParameters,
      ...queryParams,
    }).toString();
  }

  return resolved;
}