match method
Implementation
(RouteData?, Map<String, String>) match(String method, Uri uri) {
List<String> segments = uri.path.split('/').where((s) => s.isNotEmpty).toList();
Map<String, String> params = {};
RouteNode current = _root;
for (int i = 0; i < segments.length; i++) {
String 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!;
// Capture trailing path for wildcard
params['*'] = segments.sublist(i).join('/');
break;
} else {
return (null, {});
}
}
RouteData? data = current.handlers[method.toUpperCase()];
return (data, params);
}