centerOnNode method

void centerOnNode(
  1. String nodeId
)

Centers the viewport on a specific node without changing the zoom level.

Does nothing if the node doesn't exist or if the screen size is zero.

Parameters:

  • nodeId: The ID of the node to center on

Example:

controller.centerOnNode('node1');

Implementation

void centerOnNode(String nodeId) {
  final node = _nodes[nodeId];
  if (node == null || _screenSize.value == Size.zero) return;

  final pos = node.position.value;
  final size = node.size.value;
  final currentVp = _viewport.value;

  final nodeCenterX = pos.dx + size.width / 2;
  final nodeCenterY = pos.dy + size.height / 2;

  setViewport(
    GraphViewport(
      x: _screenSize.value.width / 2 - nodeCenterX * currentVp.zoom,
      y: _screenSize.value.height / 2 - nodeCenterY * currentVp.zoom,
      zoom: currentVp.zoom,
    ),
  );
}