Flutter Windows平台如何设置窗口最小尺寸?
如何为Flutter Windows应用设置窗口最小尺寸
方法一:使用window_manager第三方包
这是最简便的实现方式,支持快速配置窗口属性:
- 在
pubspec.yaml中添加依赖:
dependencies: flutter: sdk: flutter window_manager: ^0.3.0 # 可替换为最新稳定版本
- 在
main.dart中初始化并设置最小尺寸:
import 'package:flutter/material.dart'; import 'package:window_manager/window_manager.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // 初始化窗口管理器 await windowManager.ensureInitialized(); // 配置窗口参数,重点设置minimumSize WindowOptions windowOptions = WindowOptions( size: const Size(800, 600), // 初始窗口大小 minimumSize: const Size(400, 300), // 这里设置你需要的最小尺寸 center: true, title: "你的应用标题", ); windowManager.waitUntilReadyToShow(windowOptions, () async { await windowManager.show(); await windowManager.focus(); }); runApp(const MyApp()); } // 你的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 MyHomePage(title: 'Flutter Demo Home Page'), ); } }
方法二:修改Windows原生代码(无第三方依赖)
如果不想引入第三方包,可以直接修改Flutter生成的Windows工程文件:
- 打开项目中的
windows/runner/win32_window.cpp文件 - 在
CreateAndShowWindow函数里,CreateWindowEx调用之前添加最小尺寸配置:
// 设置窗口最小尺寸 MINMAXINFO minMaxInfo; minMaxInfo.ptMinTrackSize.x = 400; // 自定义最小宽度 minMaxInfo.ptMinTrackSize.y = 300; // 自定义最小高度 SetWindowLongPtr(hwnd, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(&minMaxInfo));
- 在
WndProc函数中添加WM_GETMINMAXINFO消息处理:
case WM_GETMINMAXINFO: { MINMAXINFO* pInfo = reinterpret_cast<MINMAXINFO*>(lParam); MINMAXINFO* pMyMinMax = reinterpret_cast<MINMAXINFO*>(GetWindowLongPtr(hwnd, GWLP_USERDATA)); if (pMyMinMax) { pInfo->ptMinTrackSize = pMyMinMax->ptMinTrackSize; } return 0; }
- 重新编译运行Windows应用,窗口就会被限制在你设置的最小尺寸内。
两种方法都能实现你的需求,方法一适合快速开发,方法二更适合需要原生定制的场景。
内容的提问来源于stack exchange,提问作者HelloWorld
相关产品推荐
相关产品推荐

