row method

void row({
  1. required List<PrintColumn> columns,
  2. int spacing = 10,
})

Draw a row with columns

Implementation

void row({required List<PrintColumn> columns, int spacing = 10}) {
  int xPosition = margin.left;
  int totalWidth =
      paperSize.width - margin.width - (spacing * (columns.length - 1));
  int totalRatio = columns.fold(0, (sum, col) => sum + col.flex);

  for (PrintColumn column in columns) {
    int columnWidth = (totalWidth * (column.flex / totalRatio)).round();
    int textXPosition = xPosition;

    if (column.style.align == PrintAlign.center) {
      textXPosition +=
          ((columnWidth - font.getMetrics(column.text).width) / 2).round();
    } else if (column.style.align == PrintAlign.right) {
      textXPosition += (columnWidth - font.getMetrics(column.text).width)
          .round();
    }

    drawString(
      utilImage,
      column.text,
      font: font,
      x: textXPosition,
      y: runningHeight,
      color: textColor,
    );
    xPosition += columnWidth + spacing;
  }

  runningHeight += font.lineHeight + 10;
}