row method
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;
}