removeNode method

  1. @override
void removeNode(
  1. 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();
}