You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Windows应用如何设置最小/最大屏幕尺寸禁止用户调整窗口大小

实现方案

Flutter Windows本身没有内置窗口尺寸控制API,你可以通过两种方式实现固定窗口大小、禁止拖拽调整的需求:


方案一:使用window_manager第三方包(推荐)

这是目前Flutter桌面端窗口管理的主流通用方案,全Dart层实现,不需要修改原生代码,后续扩展其他窗口控制能力也更方便。

  1. 安装依赖
    在pubspec.yaml中添加依赖:
dependencies:
  flutter:
    sdk: flutter
  window_manager: ^0.3.9 # 可替换为当前最新稳定版本

执行flutter pub get完成安装。
2. 配置窗口参数
在main.dart的main函数中初始化窗口配置:

import 'package:flutter/material.dart';
import 'package:window_manager/window_manager.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await windowManager.ensureInitialized();

  // 配置窗口属性
  WindowOptions windowOptions = const WindowOptions(
    size: Size(400, 800), // 窗口启动初始尺寸
    minimumSize: Size(400, 800), // 最小窗口宽高
    maximumSize: Size(400, 800), // 最大窗口宽高
    // 最小和最大尺寸设为相同值时,用户无法通过拖拽调整窗口大小
    windowButtonVisibility: false, // 隐藏窗口缩放按钮,避免用户点击缩放
  );

  await windowManager.waitUntilReadyToShow(windowOptions, () async {
    await windowManager.show();
    await windowManager.focus();
  });

  runApp(const MyApp());
}

// 后续原有App代码无需修改
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text("固定尺寸窗口示例")),
      ),
    );
  }
}

方案二:修改Windows原生代码(无需引入第三方依赖)

如果不需要额外的窗口控制能力,也可以直接修改Windows原生层的窗口配置:
打开项目路径下的windows/runner/win32_window.cpp文件,找到Win32Window::CreateAndShow方法,修改窗口创建时的风格参数:

HWND window = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    window_class.lpszClassName,
    title,
    // 去掉可拖拽调整的边框样式和最大化按钮
    WS_OVERLAPPEDWINDOW & ~WS_THICKFRAME & ~WS_MAXIMIZEBOX,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    static_cast<int>(size.width),
    static_cast<int>(size.height),
    nullptr,
    nullptr,
    GetModuleHandle(nullptr),
    this);

如果需要严格限制窗口最大最小尺寸,还可以添加WM_GETMINMAXINFO消息的处理逻辑,固定尺寸参数即可。


内容的提问来源于stack exchange,提问作者Khamidjon Khamidov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:15:07