Fox*_*x32 7 dart flutter flutter-shortcuts
我正在编写一个 Flutter 应用程序,并希望在该应用程序的 Web 版本中处理 Ctrl+I 等键盘快捷键。
\n\n小免责声明:看起来围绕快捷方式的 Flutter API 最近发生了变化。我找到的在线文档已经过时了。我在用着Flutter 1.19.0-0.0.pre \xe2\x80\xa2 channel dev。
我发现Actions API 设计文档感觉像是当前可用的 API。根据文档中的示例,我实现了这个简短的片段:
\n\nclass MyIntent extends Intent {}\n\nclass MyApp extends StatelessWidget {\n // This widget is the root of your application.\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: \'Flutter Demo\',\n theme: ThemeData(\n primarySwatch: Colors.blue,\n visualDensity: VisualDensity.adaptivePlatformDensity,\n ),\n home: Shortcuts(\n shortcuts: {\n LogicalKeySet(LogicalKeyboardKey.control): MyIntent(),\n },\n child: Actions(\n actions: {\n MyIntent: CallbackAction(onInvoke: (i) {\n print(\'Hello World!!!\');\n return null;\n }),\n },\n child: Center(\n child: Column(\n children: <Widget>[\n Text(\n \'Hello World\',\n ),\n ],\n ),\n ),\n ),\n ),\n );\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n但是,它不会对按下控制键做出反应,也不会输出预期的消息。在调试代码时,我注意到ShortcutManager处理按键事件的实例不包含指定的按键组合,而是包含其他九个按键组合。
有谁知道如何使用Shortcuts和ActionsAPI 对键盘快捷键做出反应?
在您的示例中,您的想法是正确的,但您缺少的是一个Focus小部件。如果小部件没有焦点,那么它的祖先Shortcuts小部件将不会接收按键事件来处理它。
请参阅此Dartpad 示例以了解我的意思。该示例在按下“Alt+N”键时添加新的“作业”。
您还可以使用FocusableActionDetector,它将Shortcuts、Actions和鼠标悬停处理合并到一个小部件中。
| 归档时间: |
|
| 查看次数: |
4307 次 |
| 最近记录: |