SelectableGridPrompt<T> class
SelectableGridPrompt – composable system for grid-based selection prompts.
Composes:
- GridNavigator for 2D navigation with wrapping
- SelectionController for selection state
- KeyBindings for input handling
- FrameView for rendering
- PromptRunner for the interactive loop
Design principles:
- Composition over inheritance
- Separation of concerns
- DRY: Centralizes grid selection patterns
- Parallel to SelectableListPrompt for lists
Usage:
final prompt = SelectableGridPrompt<String>(
title: 'Pick colors',
items: ['Red', 'Green', 'Blue', 'Yellow'],
columns: 2,
multiSelect: true,
);
final result = prompt.run(
renderCell: (ctx, item, index, focused, selected, cellWidth) {
// Custom cell rendering
},
);
Auto layout:
final prompt = SelectableGridPrompt.responsive(
title: 'Select',
items: items,
cellWidth: 20,
);
- Available extensions
Constructors
-
SelectableGridPrompt({required String title, required List<
T> items, PromptTheme theme = PromptTheme.dark, bool multiSelect = false, int columns = 0, int? cellWidth, int? maxColumns, Set<int> ? initialSelection}) -
SelectableGridPrompt.responsive({required String title, required List<
T> items, required int cellWidth, PromptTheme theme = PromptTheme.dark, bool multiSelect = false, int? maxColumns, Set<int> ? initialSelection}) -
Creates a responsive grid that adapts to terminal width.
factory
Properties
- bindings → KeyBindings
-
Current key bindings.
no setter
- cellWidth → int?
-
Fixed cell width (null = auto-calculate from items).
final
- columns → int
-
Number of columns (0 = auto-calculate).
final
- computedCellWidth → int
-
Computed cell width.
no setter
- computedColumns → int
-
Computed column count.
no setter
- grid → GridNavigator
-
Current grid navigation state.
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
-
initialSelection
→ Set<
int> ? -
Initial selection indices.
final
-
items
→ List<
T> -
Items to select from.
final
- maxColumns → int?
-
Maximum columns for auto layout.
final
- multiSelect → bool
-
Whether multiple items can be selected.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- selection → SelectionController
-
Current selection state.
no setter
- theme → PromptTheme
-
Theme for styling.
final
- title → String
-
Title for the frame header.
final
- wasCancelled → bool
-
Whether the prompt was cancelled.
no setter
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
renderCard(
{required String title, String? subtitle, required bool isFocused, required bool isSelected}) → CardRender -
Available on SelectableGridPrompt<
Renders a two-line card with title and subtitle.T> , provided by the SelectableGridPromptCards extension -
renderChip(
T item, bool isFocused, bool isSelected, {String labelBuilder(T)?}) → String -
Available on SelectableGridPrompt<
Renders items as tag chips:T> , provided by the SelectableGridPromptTags extensiontag -
run(
{void renderCell(FrameContext ctx, T item, int index, bool isFocused, bool isSelected, int cellWidth)?, String itemLabel(T item)?, KeyBindings? extraBindings, bool showCellSeparators = true, bool showRowSeparators = true}) → List< T> - Runs the grid prompt.
-
runCustom(
{required void renderContent(FrameContext ctx), KeyBindings? extraBindings}) → List< T> - Runs with custom full-render control (for complex grids like ChoiceMap).
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
multi<
T> ({required String title, required List< T> items, PromptTheme theme = PromptTheme.dark, int columns = 0, int? cellWidth, int? maxColumns, Set<int> ? initialSelection, String labelBuilder(T)?}) → List<T> - Creates a multi-select grid prompt.
-
single<
T> ({required String title, required List< T> items, PromptTheme theme = PromptTheme.dark, int columns = 0, int? cellWidth, int? maxColumns, String labelBuilder(T)?}) → T? - Creates a single-select grid prompt.