Flutter实现桌面应用系统托盘功能
简介桌面应用很多都会在系统托盘中出现,那么Flutter的开发的桌面应用该如何增加到系统托盘中呢?本文将带大家一起尝试一下.
system_tray:是一个支持系统托盘的插件,支持Windows、MacOS和Linux系统.
插件名称:system_tray
地址:https://pub.flutter-io.cn/packages/system_tray
下面我们就一起来使用下:
一、安装
flutter pub add system_tray
二、准备图标图片
准备一张图片图标图片,放在assets下面,根据系统选择图片后缀,我这里是windows系统,所以需要使用.ico的图片,如果使用png的图片,系统会报错:
Unhandled Exception: PlatformException(Bad Arguments, Unable to init system tray, false, null)
三、编写代码
在main.dart中,添加如下函数
Future<void> initTray() async {
final systemTray = SystemTray();
await systemTray.initSystemTray(
title: "haha", iconPath: "assets/images/icon.ico");
//设置操作菜单
await systemTray.setContextMenu([
MenuItem(
label: "显示",
onClicked: appWindow.show,
),
MenuItem(
label: "隐藏",
onClicked: appWindow.hide,
),
MenuItem(
label: "退出",
onClicked: appWindow.close,
),
]);
//注册相关处理事件
systemTray.registerSystemTrayEventHandler((eventName) {
debugPrint("eventName: $eventName");
if (eventName == "leftMouseDown") {
} else if (eventName == "leftMouseUp") {
appWindow.show();
} else if (eventName == "rightMouseDown") {
} else if (eventName == "rightMouseUp") {
systemTray.popUpContextMenu();
}
});
}
然后调用下函数即可,运行后显示如下:
除了上面介绍的system_tray插件外,还有一款插件也可以实现系统托盘功能,而且功能更加齐全,插件就是tray_manager,详细文档请参考,
tray_manager
前一篇博客中已经说过Golang对Gzip的处理,其实这是我的服务器端的处理,那么当我们服务器返回Gzip压缩的字符串后,客户端如何进行解压呢?本文主要记录下JavaScript对Gzip进行压缩和解压处理。
Tauri 是一个框架,用于为所有主要桌面平台构建小巧、快速的二进制文件。开发人员可以集成任何可编译为 HTML、JS 和 CSS 的前端框架,以构建他们的用户界面。应用程序的后端是一个基于 Rust 的二进制文件,带有一个前端可以与之交互的 API。
Tauri 应用程序的用户界面目前在 macOS 和 Windows 上利用 tao 作为窗口处理库,在 Linux 上通过 Tauri 团队孵化和维护的 WRY 利用 WebKit、Windows 上的 WebView2 和 Linux 上的 WebKitGTK 创建一个统一的系统 webview(和其他好东西,如菜单和任务栏)接口。
最近想把公司的内网几台服务器能通过打开一个网站的方式进行管理,所以寻求了一圈最终选择了Teleport。Teleport,这是一个使用Go语言编写的,高效的现代SSH管理工具。
OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉处理开源软件库,是由Intel公司俄罗斯团队发起并参与和维护,支持与计算机视觉和机器学习相关的众多算法,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序,该程序库也可以使用英特尔公司的IPP进行加速处理。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题