matchRoute method

MatchResult? matchRoute(
  1. String path
)

Implementation

MatchResult? matchRoute(String path) {
  final uri = Uri.parse(path);
  final segments = _parsePath(uri.path);
  var currentNode = _root;
  final parameters = <String, String>{};
  final urlParameters = uri.queryParameters;

  for (final segment in segments) {
    if (segment.isEmpty) continue;
    final child = _findChild(currentNode, segment);
    if (child == null) {
      return null;
    } else {
      if (child.path.startsWith(':')) {
        parameters[child.path.substring(1)] = segment;
      }

      if (child.nodeSegments.length == segments.length) {
        return null;
      }

      currentNode = child;
    }
  }

  return MatchResult(
    currentNode,
    parameters,
    path,
    urlParameters: urlParameters,
  );
}