addMiddlewares method
void
addMiddlewares
(String path, List<RouteMiddleware> middlewares, [ String method = DEFAULT_METHOD ])
Implementation
void addMiddlewares(String path, List<RouteMiddleware> middlewares,
[String method = DEFAULT_METHOD]) {
assert(path != '' && middlewares != null && middlewares.isNotEmpty);
if (path == '/') {
root.middlewares[method] ??= [];
root.middlewares[method].addAll(middlewares.map(
(RouteMiddleware middleware) =>
RouteMiddlewareWrap(_middlewareSeq++, middleware)));
return;
}
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.middlewares[method] ??= [];
// 此处所有的节点都不会有处理器
node.middlewares[method].addAll(middlewares.map(
(RouteMiddleware middleware) =>
RouteMiddlewareWrap(_middlewareSeq++, middleware)));
}
// 记录当前节点
currentNode = currentNode.findOrAddChild(node);
}
}