flutter桌面快捷键实现方法

136 阅读1分钟

一. RawKeyboard

1.增加监听

void initState() {
  // TODO: implement initState
  super.initState();
  RawKeyboard.instance.addListener(_handleKeyEvent);
}

2.监听方法

void _handleKeyEvent(RawKeyEvent event) {
  if (event is RawKeyDownEvent) {
    // 处理按键按下的事件:
    //event.isAltPressed判断组合键Alt
    //ModalRoute.of(context)!.isCurrent判断页面是否处于顶层
    if(event.isAltPressed && ModalRoute.of(context)!.isCurrent){
    //传入键值匹配调用方法
      _activate(event.data.logicalKey.keyLabel);
    }
  }
}

3.移除监听

@override
void dispose() {
  // TODO: implement dispose
  super.dispose();
  RawKeyboard.instance.removeListener(_handleKeyEvent);
}

二. 参考官方菜单快捷键(MenuAnchor) api.flutter.dev/flutter/mat…