如何在为Windows构建的Flutter应用中移除标题栏?

7

我已经为Windows制作了一个简单的Flutter应用程序,运行时会显示Windows默认的标题栏。如何去除它?


作为标题栏,您所指的是关闭、最小化等按钮所在的位置吗? - Zihan
是的,我的意思是关闭、最小化、最大化按钮所在的位置。 - Manan Domadiya
2个回答

10
使用这个包window_manager并执行以下操作。
在文件开头添加此行:
import 'package:window_manager/window_manager.dart';

然后添加这行代码(此函数并未正式记录在文档中)。

void main() async{
  runApp(const MyApp());
  windowManager.waitUntilReadyToShow().then((_) async{
      await windowManager.setAsFrameless();
  });
}

你也许只想隐藏标题栏但仍然保留按钮可见。可以按如下操作实现:
await windowManager.setTitleBarStyle(TitleBarStyle.hidden);

6

使用此包 bitsdojo_window 执行以下操作:

进入应用程序文件夹,在 windows\runner\main.cpp 中在文件开头添加以下两行:

#include <bitsdojo_window_windows/bitsdojo_window_plugin.h>
auto bdw = bitsdojo_window_configure(BDW_CUSTOM_FRAME | BDW_HIDE_ON_STARTUP);

现在前往 lib\main.dart 并在 runApp(MyApp()); 之后的 main 函数中添加以下代码:

void main() {
  runApp(MyApp());

  // Add this code below

  doWhenWindowReady(() {
    appWindow.show();
  });
}

您还可以使用类似以下内容自定义窗口:

  doWhenWindowReady(() {
    final initialSize = Size(600, 450);
    appWindow.minSize = initialSize;
    appWindow.size = initialSize;
    appWindow.alignment = Alignment.center;
    appWindow.show();
  });

为了实现自己的标题按钮和文本,您可以使用该包中的以下方法:

appWindow.title(title);
appWindow.close();
appWindow.maximize();
appWindow.minimize();

你可以通过将小部件包含在 MoveWindow() 小部件中来为标题栏的属性(例如拖动和双击以最大化)提供给任何小部件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接