match method
Matches the given method and uri against registered routes.
Returns a tuple containing the RouteData and a map of path parameters.
Implementation
(RouteData?, Map<String, String>) match(String method, Uri uri) {
final segments = uri.path.split('/').where((s) => s.isNotEmpty).toList();
final params = <String, String>{};
var current = _root;
for (var i = 0; i < segments.length; i++) {
final segment = segments[i];
if (current.children.containsKey(segment)) {
current = current.children[segment]!;
} else if (current.dynamicChild != null) {
current = current.dynamicChild!;
params[current.paramName!] = segment;
} else if (current.wildcardChild != null) {
current = current.wildcardChild!;
params['*'] = segments.sublist(i).join('/');
break;
} else {
return (null, <String, String>{});
}
}
final data = current.handlers[method.toUpperCase()];
return (data, params);
}