Nik*_*kix 6 flutter flutter-desktop
刚刚开始使用 flutter,我正在使用 macOS 桌面应用程序。我想知道flutter是否支持无框窗口。例如,在 Electron.js 中,我们可以定义无框架窗口,并且我们的应用程序窗口可以具有真正自定义的形状。我们可以根据应用程序的需要重新创建标题栏等等。
无框电子应用程序示例:
我试图找到有关此功能的任何信息,但没有成功。
这个功能是计划中的吗?或者我们现在可以使用 Xcode 在 macOS 上执行此操作吗?我知道桌面支持还处于早期阶段,所以也许现在提出要求还为时过早。
对于 Windows:
要在 Flutter 中创建无框架窗口,您需要从Project Directory/windows/runner/win32_window.cpp文件更改窗口属性。
首先,找到有关创建窗口的部分。这是 Flutter 的内置代码:
HWND window = CreateWindow(
window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE,
Scale(origin.x, scale_factor), Scale(origin.y, scale_factor),
Scale(size.width, scale_factor), Scale(size.height, scale_factor),
nullptr, nullptr, GetModuleHandle(nullptr), this);
Run Code Online (Sandbox Code Playgroud)
您只需将WS_OVERLAPPEDWINDOW值更改为WS_POPUPWINDOW即可制作无框窗口。
我们的最终代码将如下所示:
HWND window = CreateWindow(
window_class, title.c_str(), WS_POPUPWINDOW | WS_VISIBLE,
Scale(origin.x, scale_factor), Scale(origin.y, scale_factor),
Scale(size.width, scale_factor), Scale(size.height, scale_factor),
nullptr, nullptr, GetModuleHandle(nullptr), this);
Run Code Online (Sandbox Code Playgroud)
请记住,如果您这样做,您将无法拖动窗口。但有一些解决方案。
编辑(01/03/2022): 您可以使用WS_THICKFRAME而不是WS_POPUPWINDOW 这对于窗口管理来说更加动态。
对于 macOS:
我发现这篇文章可能会有所帮助 -> Medium: Hide title bar on macOS with Flutter
Flutter 目前没有内置对无框窗口的支持。但是,与在其他平台上一样,您可以随意更改创建的桌面应用程序flutter create,因此您可以更改窗口的本机属性,就像它是任何其他本机应用程序一样。
| 归档时间: |
|
| 查看次数: |
4359 次 |
| 最近记录: |