sheetSkips method
Positions skipped on each sheet needed to print labels labels.
requested holds the positions already used at the start of each sheet
(sheet 1 first); missing entries count as 0. The result has one entry
per sheet that will be printed, so its length is the number of sheets.
Only multi-label sheets skip positions: rolls and single-page formats
always start from the first position.
Implementation
List<int> sheetSkips(int labels, List<int> requested) {
if (labels <= 0) return const [];
final perSheet = cellsPerPage;
if (!isMultiCellSheet) {
return List<int>.filled((labels / perSheet).ceil(), 0);
}
final skips = <int>[];
var placed = 0;
while (placed < labels) {
final index = skips.length;
final skip = index < requested.length
? requested[index].clamp(0, perSheet - 1)
: 0;
skips.add(skip);
placed += perSheet - skip;
}
return skips;
}