getLinkEndpointAlignment method

  1. @override
Alignment getLinkEndpointAlignment(
  1. ComponentData componentData,
  2. Offset targetPoint
)
override

Calculates an alignment of link endpoint on a component from ComponentData and targetPoint (nearest link point from this component).

With no implementation the link will attach to center of the component.

Implementation

@override
Alignment getLinkEndpointAlignment(
  ComponentData componentData,
  Offset targetPoint,
) {
  Offset pointPosition = targetPoint - (componentData.position + componentData.size.center(Offset.zero));
  pointPosition = Offset(
    pointPosition.dx / componentData.size.width,
    pointPosition.dy / componentData.size.height,
  );

  Offset pointAlignment;
  if (pointPosition.dx.abs() >= pointPosition.dy.abs()) {
    pointAlignment = Offset(
      pointPosition.dx / pointPosition.dx.abs(),
      pointPosition.dy / pointPosition.dx.abs(),
    );
  } else {
    pointAlignment = Offset(
      pointPosition.dx / pointPosition.dy.abs(),
      pointPosition.dy / pointPosition.dy.abs(),
    );
  }
  return Alignment(pointAlignment.dx, pointAlignment.dy);
}