animateToPosition method

void animateToPosition(
  1. GraphOffset position, {
  2. double? zoom,
  3. Duration duration = const Duration(milliseconds: 400),
  4. Curve curve = Curves.easeInOut,
})

Animates the viewport to center on a specific position in graph coordinates.

The current zoom level is preserved unless zoom is specified.

Parameters:

  • position: The graph coordinate to center on
  • zoom: Optional target zoom level (null preserves current zoom)
  • duration: Animation duration (default: 400ms)
  • curve: Animation curve (default: easeInOut)

Example:

controller.animateToPosition(GraphPosition.fromXY(500, 300));
controller.animateToPosition(position, zoom: 1.5);

Implementation

void animateToPosition(
  GraphOffset position, {
  double? zoom,
  Duration duration = const Duration(milliseconds: 400),
  Curve curve = Curves.easeInOut,
}) {
  if (_screenSize.value == Size.zero) return;

  final targetZoom = (zoom ?? _viewport.value.zoom).clamp(
    _config.minZoom.value,
    _config.maxZoom.value,
  );

  animateToViewport(
    GraphViewport(
      x: _screenSize.value.width / 2 - position.dx * targetZoom,
      y: _screenSize.value.height / 2 - position.dy * targetZoom,
      zoom: targetZoom,
    ),
    duration: duration,
    curve: curve,
  );
}