createConnectionPath static method
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 pixelsend: End point of the connection in logical pixelscurvature: Curvature factor for bezier-style connections (0.0 to 1.0)sourcePort: Optional source port for position-aware path creationtargetPort: Optional target port for position-aware path creationcornerRadius: Radius for rounded corners in step-style connectionsoffset: 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);
}