centerOnNodeWithZoom method
Centers the viewport on a node and sets zoom level in one operation.
Unlike animateToNode, this is an immediate (non-animated) update.
Parameters:
nodeId: The ID of the node to center onzoom: Target zoom level (default: 1.0)
Example:
controller.centerOnNodeWithZoom('node-123', zoom: 1.5);
Implementation
void centerOnNodeWithZoom(String nodeId, {double zoom = 1.0}) {
final node = _nodes[nodeId];
if (node == null || _screenSize.value == Size.zero) return;
final pos = node.position.value;
final size = node.size.value;
final clampedZoom = zoom.clamp(
_config.minZoom.value,
_config.maxZoom.value,
);
final nodeCenterX = pos.dx + size.width / 2;
final nodeCenterY = pos.dy + size.height / 2;
setViewport(
GraphViewport(
x: _screenSize.value.width / 2 - nodeCenterX * clampedZoom,
y: _screenSize.value.height / 2 - nodeCenterY * clampedZoom,
zoom: clampedZoom,
),
);
}