selectableRowLine method

String selectableRowLine(
  1. List<String> cells, {
  2. required int index,
  3. int? selectedColumn,
  4. bool isEditing = false,
  5. String editBuffer = '',
  6. String? leadingGutter,
})

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();
}