addPortOnComponent method

dynamic addPortOnComponent(
  1. ComponentData data,
  2. BuildContext context,
  3. double offset
)

Implementation

addPortOnComponent(ComponentData data, BuildContext context, double offset) {
  int inputPortLen = data.data.inputData?.length;
  int outputPortLen = data.data.outputData?.length;
  double height = max(180, max(inputPortLen, outputPortLen) * 2 * 20);
  double width = (height * 5) / 3;
  var portComponent = ComponentData(
    size: Size(width, height),
    position: data.position + Offset(offset, offset),
    type: data.type,
    data: BuilderComponentData.copy(data.data),
  );

  switch (portComponent.data.inputData?.length) {
    case 0:
      break;
    case > 1:
      addMultipleInputPort(portComponent, context);
    case 1:
      portComponent.data.inputData?.forEach((input) {
        try {
          portComponent.data.portData.add(
            _getPortData(
                Alignment.centerLeft, true, input, portComponent.id, context),
          );
        } catch (e) {}
      });
  }
  switch (portComponent.data.outputData?.length) {
    case 0:
      break;
    case > 1:
      addMultipleOutputPort(portComponent, context);
    case 1:
      portComponent.data.outputData?.forEach((output) {
        portComponent.data.portData.add(
          _getPortData(Alignment.centerRight, false, output, portComponent.id,
              context),
        );
      });
  }

  return portComponent;
}