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);
}
}