getOrCreatePath method

Path? getOrCreatePath({
  1. required Connection connection,
  2. required Node sourceNode,
  3. required Node targetNode,
  4. required ConnectionStyle connectionStyle,
})

Get or create cached path during painting operations This is the only place where paths should be created

Implementation

Path? getOrCreatePath({
  required Connection connection,
  required Node sourceNode,
  required Node targetNode,
  required ConnectionStyle connectionStyle,
}) {
  final currentSourcePos = sourceNode.position.value;
  final currentTargetPos = targetNode.position.value;

  // Check if cache needs updating
  final existing = _getCachedPath(connection.id);
  if (existing != null &&
      existing.sourcePosition == currentSourcePos &&
      existing.targetPosition == currentTargetPos) {
    return existing.originalPath; // Cache hit
  }

  // Create new path and cache it
  final newPath = _createAndCachePath(
    connection: connection,
    sourceNode: sourceNode,
    targetNode: targetNode,
    sourcePosition: currentSourcePos,
    targetPosition: currentTargetPos,
    connectionStyle: connectionStyle,
  );

  return newPath?.originalPath;
}