Flutter Desktop中如何使用onKeyEvent检测多按键组合?
用onKeyEvent实现多按键检测(Flutter Desktop)
要替换即将废弃的onKey API,使用onKeyEvent实现Shift+Enter的检测逻辑,核心是利用KeyEvent的修饰键属性和逻辑键判断来实现组合键检测,具体代码如下:
FocusNode( onKeyEvent: (node, event) { // 只处理按键按下事件,避免重复触发 if (event.type == KeyEventType.down) { // 判断当前按下的是Enter键 if (event.logicalKey == LogicalKeyboardKey.enter) { // 检测Shift键是否同时按下 if (event.isShiftPressed) { return KeyEventResult.ignored; } sendAction(); return KeyEventResult.handled; } } return KeyEventResult.ignored; }, )
关键说明:
KeyEvent直接提供修饰键状态属性:isShiftPressed、isControlPressed、isAltPressed等,无需额外方法即可判断修饰键是否按下- 通过
event.logicalKey == LogicalKeyboardKey.enter判断当前触发事件的主按键 - 增加
event.type == KeyEventType.down判断,确保只在按键按下时执行逻辑,和原onKey的行为对齐
如果需要检测其他组合键(比如Ctrl+S),只需替换对应的logicalKey和修饰键属性即可,例如:
if (event.logicalKey == LogicalKeyboardKey.keyS && event.isControlPressed) { // 执行保存逻辑 return KeyEventResult.handled; }
内容的提问来源于stack exchange,提问作者alex smith
相关产品推荐
相关产品推荐

