如何设置Windows桌面Flutter应用的窗口尺寸?
Windows桌面Flutter应用窗口尺寸设置及边框贴合问题解决
方法一:用window_manager包(推荐)
这是最便捷的Flutter端解决方案,无需修改原生代码:
- 在
pubspec.yaml添加依赖:
dependencies: window_manager: ^0.3.0
执行flutter pub get安装依赖。
- 在
main.dart中初始化并配置窗口:
import 'package:flutter/material.dart'; import 'package:window_manager/window_manager.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await windowManager.ensureInitialized(); // 配置窗口参数 WindowOptions windowOptions = WindowOptions( size: const Size(1280, 720), // 自定义窗口尺寸 minimumSize: const Size(800, 600), // 可选:设置窗口最小尺寸 position: const Offset(0, 0), // 窗口左上角定位到桌面原点,解决左侧不贴合问题 title: "你的应用名称", center: false, // 关闭居中,让position设置生效 ); windowManager.waitUntilReadyToShow(windowOptions, () async { await windowManager.show(); await windowManager.focus(); }); runApp(const MyApp()); } // 你的应用主体代码示例 class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData(primarySwatch: Colors.blue), home: const Scaffold(body: Center(child: Text('Hello World'))), ); } }
方法二:修改Windows原生代码
不想用第三方包的话,直接修改Windows平台代码:
- 打开项目根目录下的
windows/runner/main.cpp文件 - 找到
FlutterWindow::OnCreate方法里的CreateWindow调用,调整窗口的起始坐标和尺寸:
HWND window = CreateWindow( window_class, title.c_str(), WS_OVERLAPPEDWINDOW, 0, 0, // 将x、y设为0,让窗口左上角贴合桌面边框 1280, 720, // 自定义窗口宽高 nullptr, nullptr, GetModuleHandle(nullptr), this );
如果设置后仍有间距,可在窗口创建后添加以下代码强制调整位置:
SetWindowPos(window, nullptr, 0, 0, 1280, 720, SWP_NOZORDER | SWP_SHOWWINDOW);
修改完成后重新编译运行Windows应用即可。
额外提示
- 如果需要允许用户拖动调整窗口大小,方法一中保持
resizable: true(默认开启),方法二中保留WS_OVERLAPPEDWINDOW样式即可。 - 若要设置窗口为全屏,方法一中可添加
fullScreen: true到WindowOptions。
内容的提问来源于stack exchange,提问作者rozerro
相关产品推荐
相关产品推荐

