addChild method
Implementation
TreeNode addChild(TreeNode node) {
if (_children.isNotEmpty && _children.values.first.isPlaceholder) {
// 占位节点不能添加
assert(false, "Place holder node must be only one");
}
if (_children.isNotEmpty && node.isPlaceholder) {
// 占位节点不能添加
assert(false, "Place holder node must be only one");
}
TreeNode finalNode;
TreeNode? existsNode = _children[node.key];
if (existsNode != null) {
if (node.isEndNode && existsNode.isEndNode) {
assert(false, "Multiple end pattern: /${existsNode._getPathToRoot().join("/")}");
}
if (node.isEndNode) {
existsNode.setValue(node.value);
}
finalNode = existsNode;
} else {
_children[node.key] = node;
finalNode = node;
}
finalNode._parent = this;
return finalNode;
}