flutter桌面开发~快捷键插件的使用

简介: 今天跟着大家一起学习桌面开发使用快捷键插件

今天跟着大家一起学习桌面开发使用快捷键插件,插件地址
hotkey_manager,https://pub.flutter-io.cn/packages/hotkey_manager

安装

将此添加到你的软件包的 pubspec.yaml 文件:

dependencies:
  hotkey_manager: ^0.1.7

全局初始化

import 'package:hotkey_manager/hotkey_manager.dart';

void main() async {
  // 必须加上这一行。
  WidgetsFlutterBinding.ensureInitialized();
  // 对于热重载,`unregisterAll()` 需要被调用。
  await hotKeyManager.unregisterAll();

  runApp(MyApp());
}

常用方法

  • 注册/卸载一个系统/应用范围的热键。
// ⌥ + Q
HotKey _hotKey = HotKey(
  KeyCode.keyQ,
  modifiers: [KeyModifier.alt],
  // 设置热键范围(默认为 HotKeyScope.system)
  scope: HotKeyScope.inapp, // 设置为应用范围的热键。
);
await hotKeyManager.register(
  _hotKey,
  keyDownHandler: (hotKey) {
    print('onKeyDown+${hotKey.toJson()}');
  },
  // 只在 macOS 上工作。
  keyUpHandler: (hotKey){
    print('onKeyUp+${hotKey.toJson()}');
  } ,
);

await hotKeyManager.unregister(_hotKey);

await hotKeyManager.unregisterAll();
  • 使用 HotKeyRecorder 小部件帮助您录制一个热键
HotKeyRecorder(
  onHotKeyRecorded: (hotKey) {
    _hotKey = hotKey;
    setState(() {});
  },
);

最后我整理成一个HotKeyUtil,方便维护和使用

import 'package:flutter/material.dart';
//import 'package:flutter_money_tool/utils/window_util.dart';
import 'package:hotkey_manager/hotkey_manager.dart';

class HotKeyUtil {
  //注册一个系统/应用范围的热键。
  static Future registerHotKey(
    KeyCode keyCode, {
    List<KeyModifier>? modifiers,
    String? identifier,
    HotKeyScope? scope,
    //监听回调
    HotKeyHandler? keyDownHandler,
    //仅支持macOS
    HotKeyHandler? keyUpHandler,
  }) async {
    HotKey _hotKey = HotKey(
      keyCode,
      modifiers: modifiers,
      identifier: identifier,
      scope: scope,
    );
    return await hotKeyManager.register(
      _hotKey,
      keyDownHandler: keyDownHandler,
      // 只在 macOS 上工作。
      keyUpHandler: keyUpHandler,
    );
  }

  //监听按键录入,录入后可以做注册热键及之后的逻辑
  static void onHotKeyRecorded({
    HotKey? initalHotKey,
    required ValueChanged<HotKey> onHotKeyRecorded,
  }) {
    HotKeyRecorder(
      initalHotKey: initalHotKey,
      onHotKeyRecorded: onHotKeyRecorded,
    );
  }

  /// 对于热重载,`unregisterAll()` 需要被调用。
  static Future unregisterAll() async {
    return await hotKeyManager.unregisterAll();
  }

  //卸载 unregisterHotKey
  static Future unregisterHotKey(HotKey hotKey) async {
    return await hotKeyManager.unregister(hotKey);
  }

  ///-----------------业务相关,根据模块需求而定--------------------------
  //注册一个关闭的热键。shift + alt + E
  static void registerCloseHotKey() async {
    registerHotKey(
      KeyCode.keyE,
      modifiers: [KeyModifier.shift, KeyModifier.alt],
      scope: HotKeyScope.system,
      keyDownHandler: (hotKey) {
        //做关闭操作
        //WindowUtil.close();
      },
    );
  }
}
相关文章
|
1月前
|
Dart Android开发
鸿蒙Flutter实战:05-使用第三方插件
在鸿蒙Flutter开发中,使用原生功能需借助插件。可自编原生ArkTS代码或采用第三方插件。自编代码通过PlatformView或MethodChannel实现;第三方插件需确保适配鸿蒙,否则须配置替代插件或自行开发。
59 1
鸿蒙Flutter实战:05-使用第三方插件
|
1月前
|
Android开发 iOS开发 容器
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
|
1月前
|
开发者
鸿蒙Flutter实战:07-混合开发
鸿蒙Flutter混合开发支持两种模式:1) 基于har包,便于主项目开发者无需关心Flutter细节,但不支持热重载;2) 基于源码依赖,利于代码维护与热重载,需配置Flutter环境。项目结构包括AppScope、flutter_module等目录,适用于不同开发需求。
74 3
|
16天前
|
传感器 开发框架 物联网
鸿蒙next选择 Flutter 开发跨平台应用的原因
鸿蒙(HarmonyOS)是华为推出的一款旨在实现多设备无缝连接的操作系统。为了实现这一目标,鸿蒙选择了 Flutter 作为主要的跨平台应用开发框架。Flutter 的跨平台能力、高性能、丰富的生态支持和与鸿蒙系统的良好兼容性,使其成为理想的选择。通过 Flutter,开发者可以高效地构建和部署多平台应用,推动鸿蒙生态的快速发展。
128 0
|
18天前
|
Dart 安全 UED
Flutter&鸿蒙next中的表单封装:提升开发效率与用户体验
在移动应用开发中,表单是用户与应用交互的重要界面。本文介绍了如何在Flutter中封装表单,以提升开发效率和用户体验。通过代码复用、集中管理和一致性的优势,封装表单组件可以简化开发流程。文章详细讲解了Flutter表单的基础、封装方法和表单验证技巧,帮助开发者构建健壮且用户友好的应用。
58 0
|
1月前
|
编解码 Dart API
鸿蒙Flutter实战:06-使用ArkTs开发Flutter鸿蒙插件
本文介绍了如何开发一个 Flutter 鸿蒙插件,实现 Flutter 与鸿蒙的混合开发及双端消息通信。通过定义 `MethodChannel` 实现 Flutter 侧的 token 存取方法,并在鸿蒙侧编写 `EntryAbility` 和 `ForestPlugin`,使用鸿蒙的首选项 API 完成数据的读写操作。文章还提供了注意事项和参考资料,帮助开发者更好地理解和实现这一过程。
56 0
|
1月前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
48 0
|
Dart 开发工具 开发者
【Flutter】Flutter 拍照示例 ( 创建应用 | 安装 image_picker 插件 )(二)
【Flutter】Flutter 拍照示例 ( 创建应用 | 安装 image_picker 插件 )(二)
214 0
【Flutter】Flutter 拍照示例 ( 创建应用 | 安装 image_picker 插件 )(二)
|
开发工具
【Flutter】Flutter 拍照示例 ( 创建应用 | 安装 image_picker 插件 )(一)
【Flutter】Flutter 拍照示例 ( 创建应用 | 安装 image_picker 插件 )(一)
258 0
【Flutter】Flutter 拍照示例 ( 创建应用 | 安装 image_picker 插件 )(一)
|
5月前
|
开发框架 前端开发 测试技术
Flutter开发常见问题解答
Flutter开发常见问题解答