我正在编写一个 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 …Run Code Online (Sandbox Code Playgroud) 使用快捷方式和操作小部件可以轻松添加当焦点位于实际Actions小部件下方时调用的操作。
但在我的用例中,我有一个主/详细视图布局,即使详细视图处于焦点状态,我也需要主视图句柄快捷方式(如“下一项”/“上一项”)。(也可能相反,我希望详细视图在主视图具有焦点时处理快捷方式)。
我发现的唯一解决方法是在根级别上创建一个操作,主视图和详细视图可以在该操作上监听 - 但这感觉就像它绕过了Shortcuts整个Intent框架Action。
那么有没有办法Actions在应用程序的根目录注册,而不是在焦点树内的特定上下文位置注册?
更具体一点:
“主视图”是密码条目列表,而“详细视图”提供有关密码的字段/信息。即使焦点位于列表视图上,也CopyPasswordIntent应该由详细视图处理,而即使用户将焦点放在详细视图中,也SearchIntent应该始终将焦点恢复到列表视图的搜索字段。