createConnectionPath static method

Path createConnectionPath({
  1. required dynamic style,
  2. required Offset start,
  3. required Offset end,
  4. required double curvature,
  5. Port? sourcePort,
  6. Port? targetPort,
  7. double cornerRadius = 4.0,
  8. double offset = 10.0,
})

Creates a connection path based on the connection style and parameters.

This method delegates to the polymorphic connection style classes instead of using switch statements, allowing for better extensibility and support for custom connection styles.

Parameters:

  • style: The connection style (can be ConnectionStyle instance or string ID)
  • start: Start point of the connection in logical pixels
  • end: End point of the connection in logical pixels
  • curvature: Curvature factor for bezier-style connections (0.0 to 1.0)
  • sourcePort: Optional source port for position-aware path creation
  • targetPort: Optional target port for position-aware path creation
  • cornerRadius: Radius for rounded corners in step-style connections
  • offset: Offset distance from ports in logical pixels

Returns: A Path object representing the connection geometry

Example:

// Using a built-in style constant
final bezierPath = ConnectionPathCalculator.createConnectionPath(
  style: ConnectionStyles.bezier,
  start: Offset(0, 0),
  end: Offset(100, 100),
  curvature: 0.5,
);

// Using a style ID string
final stepPath = ConnectionPathCalculator.createConnectionPath(
  style: 'step',
  start: Offset(0, 0),
  end: Offset(100, 100),
  curvature: 0.3,
  cornerRadius: 8.0,
);

Implementation

static Path createConnectionPath({
  required dynamic style, // Accept both old enum and new class instances
  required Offset start,
  required Offset end,
  required double curvature,
  Port? sourcePort,
  Port? targetPort,
  double cornerRadius = 4.0,
  double offset = 10.0,
}) {
  // Convert style to connection style instance if it's still an enum
  final ConnectionStyle connectionStyle = _resolveConnectionStyle(style);

  // Create path parameters
  final params = PathParameters(
    start: start,
    end: end,
    curvature: curvature,
    sourcePort: sourcePort,
    targetPort: targetPort,
    cornerRadius: cornerRadius,
    offset: offset,
  );

  // Delegate to the connection style's createPath method
  return connectionStyle.createPath(params);
}