dvRouteParams function

Map<String, String>? dvRouteParams(
  1. String pattern,
  2. String path
)

The path's parameters under pattern, or null when it does not match.

Implementation

Map<String, String>? dvRouteParams(String pattern, String path) {
  if (pattern == path) return const <String, String>{};
  if (!pattern.contains(':')) return null;
  final List<String> patternParts = pattern.split('/');
  final List<String> pathParts = path.split('/');
  if (patternParts.length != pathParts.length) return null;
  final Map<String, String> params = <String, String>{};
  for (var i = 0; i < patternParts.length; i++) {
    final String segment = patternParts[i];
    if (segment.startsWith(':')) {
      params[segment.substring(1)] = Uri.decodeComponent(pathParts[i]);
    } else if (segment != pathParts[i]) {
      return null;
    }
  }
  return params;
}