Shortcuts class Null safety

A widget to 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.

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.

To create a local project with this code sample, run:
flutter create --sample=widgets.Shortcuts.1 mysample

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).

To create a local project with this code sample, run:
flutter create --sample=widgets.Shortcuts.2 mysample

See also:

  • 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.


Shortcuts({Key? key, ShortcutManager? manager, required Map<LogicalKeySet, Intent> shortcuts, required Widget child, String? debugLabel})
Creates a const Shortcuts widget. [...]


child Widget
The child widget for this Shortcuts widget. [...]
debugLabel String?
The debug label that is printed for this node when logged. [...]
hashCode int
The hash code for this object. [...]
@nonVirtual, read-only, inherited
key Key?
Controls how one widget replaces another widget in the tree. [...]
final, inherited
manager ShortcutManager?
The ShortcutManager that will manage the mapping between key combinations and Actions. [...]
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
shortcuts Map<LogicalKeySet, Intent>
The map of shortcuts that the ShortcutManager will be given to manage. [...]


createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree. [...]
createState() → _ShortcutsState
Creates the mutable state for this widget at a given location in the tree. [...]
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children. [...]
@protected, inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node. [...]
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep. [...]
toString({DiagnosticLevel minLevel:}) String
A string representation of this object. [...]
toStringDeep({String prefixLineOne: '', String? prefixOtherLines, DiagnosticLevel minLevel: DiagnosticLevel.debug}) String
Returns a string representation of this node and its descendants. [...]
toStringShallow({String joiner: ', ', DiagnosticLevel minLevel: DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object. [...]
toStringShort() String
A short, textual description of this widget.


operator ==(Object other) bool
The equality operator. [...]
@nonVirtual, inherited

Static Methods

maybeOf(BuildContext context) ShortcutManager?
Returns the ShortcutManager that most tightly encloses the given BuildContext. [...]
of(BuildContext context) ShortcutManager
Returns the ShortcutManager that most tightly encloses the given BuildContext. [...]