Flutter Desktop Windows端启动最大化问题(window_manager插件)
Flutter Desktop 启动最大化闪回问题解决
问题核心是代码执行顺序错误:你先调用了runApp(MyApp()),此时Flutter已开始初始化窗口,后续的窗口配置会被默认窗口尺寸覆盖,导致闪显最大化状态后又恢复默认。
修正后的代码
import 'package:english_words/english_words.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:window_manager/window_manager.dart'; import 'favorites_page.dart'; import 'generator_page.dart'; import 'settings_page.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await windowManager.ensureInitialized(); WindowOptions windowOptions = const WindowOptions( // 无需手动设置固定尺寸,maximize()会自动适配屏幕 ); await windowManager.waitUntilReadyToShow(windowOptions, () async { await windowManager.maximize(); // 先执行最大化操作 await windowManager.show(); await windowManager.focus(); runApp(const MyApp()); // 窗口配置生效后再启动应用 }); }
关键改动说明
- 把
runApp(MyApp())移到windowManager.waitUntilReadyToShow的回调内部,确保窗口参数配置、最大化操作完成后,再初始化Flutter界面,避免默认窗口尺寸覆盖自定义设置。 - 调整执行顺序,先调用
maximize()再show(),从根源减少闪屏概率。 - 移除了重复的
runApp调用(注释行)。
如果需要更直接的配置,也可以在WindowOptions中直接指定屏幕尺寸,但maximize()方法能自动适配不同分辨率显示器,适配性更强。
内容的提问来源于stack exchange,提问作者okkko
相关产品推荐
相关产品推荐

