centerOnNode method
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,
),
);
}