addRoute method

dynamic addRoute (String path, RouteHandler handler, [ String method = DEFAULT_METHOD ])

Implementation

addRoute(final String path, final RouteHandler handler,
    [String method = DEFAULT_METHOD]) {
  assert(path != '' && handler != null);

  final Uri uri = Uri.parse(path);
  // 使用 / 拆分路径
  List<String> nodeKeys = uri.pathSegments;
  // 设置当前节点为根节点
  RouteNode currentNode = root;
  // 遍历所有的节点
  for (int i = 0, len = nodeKeys.length; i < len; i++) {
    final String nodeKey = nodeKeys[i];

    assert(nodeKey != '');

    RouteNode node = RouteNode(nodeKey, level: i + 1, parent: currentNode);

    if (i == len - 1) {
      node.setHandler(method, handler);
    }

    if (node.type == NodeType.wildcard && i < len - 1) {
      throw UnsupportRouteIdException(
          path, 'The * segment must be end of segments!');
    }

    // 记录当前节点
    currentNode = currentNode.findOrAddChild(node);
  }
}