flutter windows如何实现启动最大化

在Flutter开发的Windows应用中,如何实现启动时窗口自动最大化?我在main函数中尝试了设置window.size和window.position,但启动时仍然是默认大小。是否需要调用特定的Win32 API或修改清单文件?求具体实现方法或示例代码。

2 回复

在Flutter Windows中,可通过修改windows/runner/main.cpp文件实现启动最大化。在WinMain函数中,使用ShowWindow函数并传入SW_SHOWMAXIMIZED参数即可。

更多关于flutter windows如何实现启动最大化的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter Windows应用中实现启动窗口最大化,可以通过以下两种方式实现:

方法一:使用 window_size 包(推荐)

  1. 添加依赖
dependencies:
  window_size: ^0.3.0
  1. 在 main.dart 中配置
import 'package:flutter/material.dart';
import 'package:window_size/window_size.dart';
import 'dart:io';

void main() {
  if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) {
    WidgetsFlutterBinding.ensureInitialized();
    setWindowTitle('Your App Title');
    setWindowMaxSize(Size.infinite); // 允许最大化
    setWindowMinSize(Size(800, 600)); // 设置最小尺寸
  }
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Maximized Window')),
        body: Center(child: Text('窗口已最大化启动')),
      ),
    );
  }
}

方法二:修改 Windows 原生代码

  1. 编辑 windows/runner/main.cpp
#include <flutter/dart_project.h>
#include <flutter/flutter_view_controller.h>
#include <windows.h>

#include "flutter_window.h"
#include "utils.h"

int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
                      _In_ wchar_t *command_line, _In_ int show_command) {
  // 在创建窗口前设置启动状态为最大化
  HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"your_app_name");
  if (hwnd != nullptr) {
    ::ShowWindow(hwnd, SW_SHOWMAXIMIZED);
  }
  
  // ... 其余原有代码保持不变
}

推荐使用方法一

使用 window_size 包更加简单可靠,不需要修改原生代码,且跨平台兼容性更好。安装包后,在 main() 函数初始化时调用相应方法即可实现窗口最大化启动。

记得在 pubspec.yaml 中添加依赖后运行 flutter pub get

回到顶部