ShortcutsModifier class

A widget that creates key bindings to specific actions for its descendants.

This widget establishes a ShortcutManager to be used by its descendants when invoking an Action via a keyboard key combination that maps to an Intent.

See the article on Using Actions and Shortcuts for a detailed explanation.

{@tool dartpad} Here, we will use the Shortcuts and Actions widgets to add and subtract from a counter. When the child widget has keyboard focus, and a user presses the keys that have been defined in Shortcuts, the action that is bound to the appropriate Intent for the key is invoked.

It also shows the use of a CallbackAction to avoid creating a new Action subclass.

** See code in examples/api/lib/widgets/shortcuts/shortcuts.0.dart ** {@end-tool}

{@tool dartpad} This slightly more complicated, but more flexible, example creates a custom Action subclass to increment and decrement within a widget (a Column) that has keyboard focus. When the user presses the up and down arrow keys, the counter will increment and decrement a data model using the custom actions.

One thing that this demonstrates is passing arguments to the Intent to be carried to the Action. This shows how actions can get data either from their own construction (like the model in this example), or from the intent passed to them when invoked (like the increment amount in this example).

** See code in examples/api/lib/widgets/shortcuts/shortcuts.1.dart ** {@end-tool}

See also:

  • CallbackShortcuts, a less complicated (but less flexible) way of defining key bindings that just invoke callbacks.
  • Intent, a class for containing a description of a user action to be invoked.
  • Action, a class for defining an invocation of a user action.
  • CallbackAction, a class for creating an action from a callback.
Inheritance
Available extensions

Constructors

ShortcutsModifier({Key? key, Key? modifierKey, Widget? child, required Map<ShortcutActivator, Intent> shortcuts, String? debugLabel})
Creates a const Shortcuts widget that owns the map of shortcuts and creates its own manager.
const
ShortcutsModifier.manager({Key? key, Key? modifierKey, Widget? child, required ShortcutManager manager, String? debugLabel})
Creates a const Shortcuts widget that uses the manager to manage the map of shortcuts.
const

Properties

debugLabel String?
The debug label that is printed for this node when logged.
final
hashCode int
The hash code for this object.
no setterinherited
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
manager ShortcutManager?
The ShortcutManager that will manage the mapping between key combinations and Actions.
final
modifierKey Key?
The actual key of the widget, which Modifier wrapped
finalinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
shortcuts Map<ShortcutActivator, Intent>
The map of shortcuts that describes the mapping between a key sequence defined by a ShortcutActivator and the Intent that will be emitted when that key sequence is pressed.
no setter

Methods

build(BuildContext context) Widget
Describes the part of the user interface represented by this widget.
inherited
buildWithChild(BuildContext context, Widget? child) Widget
A build method that receives an extra child parameter.
override
createElement() SingleChildStatelessElement
Create a SingleChildStatelessElement
inherited
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited