accepts method Null safety
- RawKeyEvent event,
- RawKeyboard state
override
Whether the triggering event
and the keyboard state
at the time of the
event meet required conditions, providing that the event is a triggering
event.
For example, for Ctrl-A
, it has to check if the event is a
KeyDownEvent, if either side of the Ctrl key is pressed, and none of
the Shift keys, Alt keys, or Meta keys are pressed; it doesn't have to
check if KeyA is pressed, since it's already guaranteed.
This method must not cause any side effects for the state
. Typically
this is only used to query whether HardwareKeyboard.logicalKeysPressed
contains a key.
Since ShortcutActivator accepts all event types, subclasses might want to check the event type in accepts.
See also:
- LogicalKeyboardKey.collapseSynonyms, which helps deciding whether a modifier key is pressed when the side variation is not important.
Implementation
@override
bool accepts(RawKeyEvent event, RawKeyboard state) {
if (event is! RawKeyDownEvent) {
return false;
}
final Set<LogicalKeyboardKey> collapsedRequired = LogicalKeyboardKey.collapseSynonyms(keys);
final Set<LogicalKeyboardKey> collapsedPressed = LogicalKeyboardKey.collapseSynonyms(state.keysPressed);
final bool keysEqual = collapsedRequired.difference(collapsedPressed).isEmpty
&& collapsedRequired.length == collapsedPressed.length;
return keysEqual;
}