removeNode method
void
removeNode(
- Node node
)
override
Implementation
@override
void removeNode(Node node) {
if (!containsNode(node.key)) {
throw StateError('Node "${node.key}" does not exist in graph');
}
if (node == root) {
throw StateError('Root node cannot be removed');
}
// Сначала удаляем все рёбра, связанные с узлом
final nodeEdges = getNodeEdges(node).toList();
for (final child in nodeEdges) {
removeEdge(node, child);
}
// Удаляем узел из родительских связей
final parent = getNodeParent(node);
if (parent != null) {
removeEdge(parent, node);
}
// Удаляем сам узел
_nodes.remove(node.key);
_edges.remove(node);
_nodeDataManager.remove(node.key);
_invalidateCache();
}