Flutter Desktop 点击窗口

问题描述 投票:0回答:1

我正在使用适用于 Linux 的 Flutter Desktop 构建透明应用程序,有没有办法单击主应用程序窗口,仍然显示该应用程序?我正在尝试编写某种覆盖应用程序。

我尝试在根小部件上使用

IgnorePointer
小部件,但仍然无法转发窗口后面的单击事件。

我假设需要在 application.cc 文件中添加某种绑定。

flutter gtk flutter-desktop
1个回答
0
投票

1.使应用程序透明

  • 打开 Flutter 项目的 Linux 文件夹中的
    application.cc
    文件。
  • 使用 GTK(Linux 窗口库)添加代码以使窗口背景透明。

例如:

#include <gtk/gtk.h>

// Make the window transparent
gtk_widget_set_visual(gtk_window, gdk_screen_get_rgba_visual(gdk_screen_get_default()));

2.启用点击功能

  • 使用 X11 使应用程序忽略鼠标点击。
  • 添加此代码以忽略鼠标输入:

例如:

#include <X11/extensions/shape.h>
#include <X11/Xlib.h>

// Ignore mouse clicks for the window
XShapeCombineRegion(display, window, ShapeInput, 0, 0, None, ShapeSet);

3.重建应用程序

  • 进行更改后,使用以下命令重建您的应用程序:
flutter build linux
© www.soinside.com 2019 - 2024. All rights reserved.