是否有任何选项可以在全屏模式下运行 Flutter Windows 桌面应用程序

Yuv*_*j M 8 flutter

我尝试过 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)


Lux*_*uxa 7

遇到了同样的问题,我在这里分享我的解决方案。

我不是 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 中不需要最后一行。


smo*_*gan 1

目前还没有对全屏模式的内置支持,因此没有可以调用来进入全屏的 Dart API。如果您熟悉 Win32 编程,您可以直接更改 Runner 代码以使窗口全屏显示,或者编写一个插件来完成此操作。