我尝试过 Flutter Windows 桌面应用程序,但我无法隐藏标题栏以在全屏模式窗口中运行应用程序
小智 10
我猜window_manager可以实现你的需求
将其添加到包的 pubspec.yaml 文件中:
dependencies:
window_manager: ^0.2.7
Run Code Online (Sandbox Code Playgroud)
// Enter fullscreen
await WindowManager.instance.setFullScreen(true);
// Level fullscreen
await WindowManager.instance.setFullScreen(false);
Run Code Online (Sandbox Code Playgroud)
遇到了同样的问题,我在这里分享我的解决方案。
我不是 Win32 开发人员,但我设法通过这种方式制作基本的全屏。
这段代码适用于我的 Flutter 版本 1.21.0-10.0.pre.114,我希望它也适合你。
我的解决方案深受此启发:https ://stackoverflow.com/a/2416613/14093885
您必须编辑./windows/runner/main.cpp
在第 30 行左右的这些语句之间插入以下代码:
window.SetQuitOnClose(true);
//Insert Code Here
run_loop.Run();
Run Code Online (Sandbox Code Playgroud)
要插入的代码:
//HWND is window handler
HWND hwnd = window.GetHandle();
auto windowHDC = GetDC(hwnd);
int fullscreenWidth = GetDeviceCaps(windowHDC, DESKTOPHORZRES);
int fullscreenHeight = GetDeviceCaps(windowHDC, DESKTOPVERTRES);
int colourBits = GetDeviceCaps(windowHDC, BITSPIXEL);
int refreshRate = GetDeviceCaps(windowHDC, VREFRESH);
DEVMODE fullscreenSettings;
bool isChangeSuccessful;
EnumDisplaySettings(NULL, 0, &fullscreenSettings);
fullscreenSettings.dmPelsWidth = fullscreenWidth;
fullscreenSettings.dmPelsHeight = fullscreenHeight;
fullscreenSettings.dmBitsPerPel = colourBits;
fullscreenSettings.dmDisplayFrequency = refreshRate;
fullscreenSettings.dmFields = DM_PELSWIDTH |
DM_PELSHEIGHT |
DM_BITSPERPEL |
DM_DISPLAYFREQUENCY;
SetWindowLongPtr(hwnd, GWL_EXSTYLE, WS_EX_APPWINDOW | WS_EX_TOPMOST);
SetWindowLongPtr(hwnd, GWL_STYLE, WS_POPUP | WS_VISIBLE);
SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, fullscreenWidth, fullscreenHeight, SWP_SHOWWINDOW);
isChangeSuccessful = ChangeDisplaySettings(&fullscreenSettings, CDS_FULLSCREEN) == DISP_CHANGE_SUCCESSFUL;
ShowWindow(hwnd, SW_MAXIMIZE);
Run Code Online (Sandbox Code Playgroud)
编辑 - Flutter 2:
根据 @Pavel 的说法,ShowWindow(hwnd, SW_MAXIMIZE);Flutter 2 中不需要最后一行。
目前还没有对全屏模式的内置支持,因此没有可以调用来进入全屏的 Dart API。如果您熟悉 Win32 编程,您可以直接更改 Runner 代码以使窗口全屏显示,或者编写一个插件来完成此操作。
| 归档时间: |
|
| 查看次数: |
3114 次 |
| 最近记录: |