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;
}