| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | import 'package:flutter/material.dart';import 'package:flutter/services.dart';class GridShortcuts extends StatelessWidget {  final Widget child;  const GridShortcuts({required this.child, Key? key}) : super(key: key);  @override  Widget build(BuildContext context) {    return Shortcuts(      shortcuts: bindKeys([]),      child: Actions(        dispatcher: LoggingActionDispatcher(),        actions: const {},        child: child,      ),    );  }}Map<ShortcutActivator, Intent> bindKeys(List<LogicalKeyboardKey> keys) {  return {for (var key in keys) LogicalKeySet(key): KeyboardKeyIdent(key)};}Map<Type, Action<Intent>> bindActions() {  return {    KeyboardKeyIdent: KeyboardBindingAction(),  };}class KeyboardKeyIdent extends Intent {  final KeyboardKey key;  const KeyboardKeyIdent(this.key);}class KeyboardBindingAction extends Action<KeyboardKeyIdent> {  KeyboardBindingAction();  @override  void invoke(covariant KeyboardKeyIdent intent) {    // print(intent);  }}class LoggingActionDispatcher extends ActionDispatcher {  @override  Object? invokeAction(    covariant Action<Intent> action,    covariant Intent intent, [    BuildContext? context,  ]) {    // print('Action invoked: $action($intent) from $context');    super.invokeAction(action, intent, context);    return null;  }}
 |