【发布时间】:2020-05-22 17:04:19
【问题描述】:
我正在编写一个 Flutter 应用程序,并且想在应用程序的 Web 版本中处理键盘快捷键,例如 Ctrl+I。
小免责声明:看起来 Flutter API 中的快捷方式最近发生了变化。我发现的在线文档已经过时了。我正在使用Flutter 1.19.0-0.0.pre • channel dev。
我发现Actions API Design 文档感觉就像当前可用的 API。根据文档中的示例,我实现了这个简短的 sn-p:
class MyIntent extends Intent {}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: Shortcuts(
shortcuts: {
LogicalKeySet(LogicalKeyboardKey.control): MyIntent(),
},
child: Actions(
actions: {
MyIntent: CallbackAction(onInvoke: (i) {
print('Hello World!!!');
return null;
}),
},
child: Center(
child: Column(
children: <Widget>[
Text(
'Hello World',
),
],
),
),
),
),
);
}
}
但是,它不会对按下控制键做出反应,也不会输出预期的消息。在调试代码时,我注意到处理按键事件的ShortcutManager 实例不包含我指定的按键组合,而是包含其他九个按键组合。
有人知道如何使用Shortcuts 和Actions API 对键盘快捷键做出反应吗?
【问题讨论】:
标签: flutter dart flutter-shortcuts