cheatSheet method
void
cheatSheet(})
Renders a framed cheat sheet table for quick reference material.
Provide entries where each inner list represents a row and each value
maps to the corresponding column defined in columns. Rows must contain
the same number of cells as there are columns.
terminice.cheatSheet(
title: 'Navigation Shortcuts',
columns: const ['Command', 'Shortcut', 'Description'],
entries: const [
['List files', 'ls', 'Shows directory contents'],
['Change dir', 'cd <path>', 'Moves into a folder'],
],
);
The table automatically sizes columns, applies zebra striping, and renders
within a FrameView that matches the current theme.
Implementation
void cheatSheet(
String prompt, {
required List<List<String>> entries,
List<String> columns = const ['Command', 'Shortcut', 'Usage'],
List<ColumnAlign>? columnAlignments,
bool zebraStripes = true,
}) {
assert(columns.isNotEmpty, 'columns cannot be empty');
assert(entries.every((row) => row.length == columns.length),
'Each entry must match the column count (${columns.length}).');
final alignments = columnAlignments ??
List<ColumnAlign>.filled(columns.length, ColumnAlign.left);
assert(alignments.length == columns.length,
'columnAlignments must match the column count (${columns.length}).');
runWithExecutionMode<void>(
rich: () => _richCheatSheet(
prompt,
entries: entries,
columns: columns,
alignments: alignments,
zebraStripes: zebraStripes,
),
line: () => _plainCheatSheet(
prompt,
entries: entries,
columns: columns,
alignments: alignments,
),
unattended: () => _plainCheatSheet(
prompt,
entries: entries,
columns: columns,
alignments: alignments,
),
);
}