KeyBindings class
A composable collection of key bindings.
KeyBindings can be:
- Combined using
+operator ormerge() - Extended with additional bindings
- Used to generate hints automatically
- Treated as immutable value objects (safe to reuse across renders)
Example:
final bindings = KeyBindings.cancel() +
KeyBindings.confirm() +
KeyBindings.verticalNavigation(onUp: moveUp, onDown: moveDown);
- Available extensions
Constructors
-
KeyBindings(List<
KeyBinding> _bindings) -
Creates an immutable binding collection. Prefer using the provided
factories (
KeyBindings.prompt(), etc.) instead of building the list manually.const - KeyBindings.empty()
-
Creates an empty KeyBindings collection.
const
-
KeyBindings.from(List<
KeyBinding> bindings) -
Creates KeyBindings from a list of bindings.
factory
Properties
-
bindings
→ List<
KeyBinding> -
All bindings in this collection.
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
add(
KeyBinding binding) → KeyBindings -
Adds a single binding to this collection.
Returns a new collection with
bindingappended to the end. -
addAll(
List< KeyBinding> bindings) → KeyBindings -
Adds multiple bindings to this collection.
Returns a new collection with every binding in
bindingsappended. -
handle(
KeyEvent event) → KeyActionResult - Processes a key event through all bindings.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toHintEntries(
) → List< List< String> > - Generates hint entries from all bindings that have hints defined.
-
toHintsBullets(
PromptTheme theme) → String -
Available on KeyBindings, provided by the HintKeybindingsExtensions extension
Generates a hints bullets string for display. -
toHintsGrid(
PromptTheme theme) → String -
Available on KeyBindings, provided by the HintKeybindingsExtensions extension
Generates a hints grid string for display. -
toString(
) → String -
A string representation of this object.
inherited
-
waitForKey(
) → void - Waits for any matching key event using KeyEventReader.
-
waitForKeyWithResult(
) → KeyActionResult - Waits for a key and returns whichever KeyActionResult resolves first.
-
writeHints(
RenderOutput out, PromptTheme theme, {int? bulletsPerLine}) → void -
Available on KeyBindings, provided by the HintKeybindingsExtensions extension
Writes hints directly to a RenderOutput, handling all hint styles.
Operators
-
operator +(
KeyBindings other) → KeyBindings -
Combines this with another KeyBindings collection.
Bindings from
otherare added after this collection's bindings. -
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
anyKeyToContinue(
{void onContinue()?, String hintLabel = 'any key', String hintDescription = 'continue'}) → KeyBindings - Creates bindings for "press any key to continue" scenarios.
-
back(
{void onBack()?, String hintLabel = '← / Esc / Enter', String hintDescription = 'back'}) → KeyBindings - Creates "back" bindings (Left arrow, Esc, Enter) for viewer scenarios.
-
cancel(
{void onCancel()?, String hintLabel = 'Esc', String hintDescription = 'cancel'}) → KeyBindings - Creates cancel bindings (Esc and Ctrl+C).
-
conditionalTextInput(
{required TextInputBuffer buffer, required bool isEnabled(), void onInput()?}) → KeyBindings - Creates conditional text input bindings (only active when condition is true).
-
conditionalToggle(
{required bool isEnabled(), required void onToggle(), String hintLabel = 'Space', String hintDescription = 'select'}) → KeyBindings -
Creates conditional toggle binding (Space only when
isEnabledis true). -
confirm(
{KeyActionResult onConfirm()?, String hintLabel = 'Enter', String hintDescription = 'confirm'}) → KeyBindings - Creates confirm binding (Enter).
-
continuePrompt(
{void onContinue()?, String hintLabel = 'Enter', String hintDescription = 'continue'}) → KeyBindings - Creates bindings that exit on common "continue" keys (Enter, Esc, Space).
-
ctrlD(
{KeyActionResult onPress()?, String hintLabel = 'Ctrl+D', String? hintDescription}) → KeyBindings - Creates Ctrl+D binding.
-
ctrlR(
{required void onPress(), String hintLabel = 'Ctrl+R', String hintDescription = 'reveal'}) → KeyBindings - Creates Ctrl+R binding (commonly used for reveal/toggle modes).
- Creates all-direction navigation bindings (↑/↓/←/→).
-
exitOn(
{required Set< KeyEventType> keys, void onExit()?, String? hintLabel, String? hintDescription}) → KeyBindings - Creates bindings that exit on any of the specified keys.
- Creates 2D grid navigation bindings with custom move functions.
-
gridSelection(
{required void onUp(), required void onDown(), required void onLeft(), required void onRight(), void onToggle()?, bool showToggleHint = false, KeyActionResult onConfirm()?, void onCancel()?}) → KeyBindings - Creates 2D grid selection bindings (navigation + optional toggle + confirm + cancel).
- Creates horizontal navigation bindings (←/→).
-
letter(
{required String char, required void onPress(), String? hintLabel, String? hintDescription}) → KeyBindings - Creates letter key binding for a specific character (case-insensitive).
-
list(
{required void onUp(), required void onDown(), KeyActionResult onConfirm()?, void onCancel()?}) → KeyBindings - Standard list bindings: navigation + confirm + cancel.
-
merge(
List< KeyBindings> collections) → KeyBindings - Merges multiple KeyBindings collections.
-
numbers(
{required void onNumber(int number), int max = 9, bool includeZero = false, String? hintLabel, String? hintDescription}) → KeyBindings - Creates number key bindings (default 1-9, optionally 0).
-
prompt(
{KeyActionResult onConfirm()?, void onCancel()?}) → KeyBindings - Standard prompt bindings: confirm (Enter) + cancel (Esc/Ctrl+C).
-
rowToggle(
{required void onToggle(), String hintLabel = '←/→ / Space', String hintDescription = 'toggle'}) → KeyBindings - Creates row toggle binding (←/→ or Space to toggle current row).
-
searchableList(
{required void onUp(), required void onDown(), required void onSearchToggle(), required TextInputBuffer searchBuffer, required bool isSearchEnabled(), void onSearchInput()?, void onToggle()?, bool hasMultiSelect = false, KeyActionResult onConfirm()?, void onCancel()?}) → KeyBindings -
Search/list focus bindings.
isSearchEnabledreports text focus;onSearchToggleswitches focus without clearing the query or filter. Slash focuses search from results; Ctrl+F switches either direction.onSearchInputruns only when query text changes. -
searchToggle(
{required void onToggle(), String hintLabel = '/', String hintDescription = 'search'}) → KeyBindings - Creates search toggle binding (/).
-
selection(
{required void onUp(), required void onDown(), required void onToggle(), KeyActionResult onConfirm()?, void onCancel()?}) → KeyBindings - Standard selection bindings: navigation + toggle + confirm + cancel.
-
slider(
{required void onLeft(), required void onRight(), KeyActionResult onConfirm()?, void onCancel()?}) → KeyBindings - Standard slider bindings: horizontal navigation + confirm + cancel.
-
tab(
{required void onTab(), String hintLabel = 'Tab', String hintDescription = 'switch'}) → KeyBindings - Creates tab binding.
-
tabSwitch(
{required void onTab(), String hintLabel = 'Tab', String hintDescription = 'switch'}) → KeyBindings - Creates Tab binding for switching between items/modes.
-
textInput(
{required TextInputBuffer buffer(), bool isEnabled()?, void onInput()?, void onTextChanged()?}) → KeyBindings -
Text editing bindings for a fixed or dynamically focused buffer.
Recognized editing keys are consumed even when nothing changes (for
example, backspace at the start or typing at maxLength).
onInputruns only when text or cursor state changes;onTextChangedruns only for text changes. Disabled bindings ignore events. -
toggle(
{required void onToggle(), String hintLabel = 'Space', String hintDescription = 'toggle'}) → KeyBindings - Creates toggle binding (Space).
-
toggleGroup(
{required void onUp(), required void onDown(), required void onToggle(), required void onToggleAll(), KeyActionResult onConfirm()?, void onCancel()?}) → KeyBindings - Creates toggle group bindings: vertical nav + row toggle + 'A' for all + prompt.
-
togglePrompt(
{required void onToggle(), KeyActionResult onConfirm()?, void onCancel()?, String toggleHint = 'toggle'}) → KeyBindings - Standard toggle bindings: arrows toggle + space toggle + confirm + cancel.
- Creates vertical navigation bindings (↑/↓).