selectableRowLine method
Builds a row with selection highlighting.
Used for interactive table views where one cell is selected.
Implementation
String selectableRowLine(
List<String> cells, {
required int index,
int? selectedColumn,
bool isEditing = false,
String editBuffer = '',
String? leadingGutter,
}) {
final glyphs = theme.glyphs;
final buffer = StringBuffer();
// Leading gutter
buffer.write(leadingGutter ?? _defaultGutter());
final stripe = zebraStripes && index % 2 == 1;
final prefix = stripe ? theme.dim : '';
final suffix = stripe ? theme.reset : '';
for (var i = 0; i < columns.length; i++) {
if (i > 0) {
buffer.write(' ${theme.gray}${glyphs.borderVertical}${theme.reset} ');
}
final isSelected = selectedColumn == i;
final cell = i < cells.length ? cells[i] : '';
final content = (isSelected && isEditing) ? editBuffer : cell;
buffer.write(prefix);
if (isSelected) {
buffer.write(_renderSelectedCell(content, i, isEditing));
} else {
buffer.write(_padCell(cell, i));
}
buffer.write(suffix);
}
return buffer.toString();
}