centerOnNodeWithZoom method

void centerOnNodeWithZoom(
  1. String nodeId, {
  2. double zoom = 1.0,
})

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 on
  • zoom: 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,
    ),
  );
}