如何使用Flutter实现Windows端原生闪屏(启动页)
Flutter Windows端原生闪屏实现方案
本方案为Windows原生C++实现,完全在Flutter引擎加载前生效,可解决启动阶段白屏问题,不涉及任何Dart层面代码修改,符合原生实现要求。
实现原理
Flutter Windows应用启动时的白屏出现在「Win32窗口初始化完成」到「Flutter引擎渲染出第一帧」的时间间隙,我们只需要在这个间隙用Windows原生API渲染自定义闪屏内容,等Flutter第一帧就绪后再切换到Flutter渲染内容即可。
具体实现步骤
- 准备闪屏资源
将闪屏图片转为BMP格式存入项目windows/runner/resources目录,无需额外引入第三方库即可用原生GDI接口加载。 - 引入原生绘制依赖
打开windows/runner/main.cpp文件,在头部引入GDI+依赖:#include <gdiplus.h> #pragma comment (lib,"Gdiplus.lib") - 创建闪屏渲染逻辑
在主窗口初始化完成后、Flutter引擎实例创建前,新增闪屏窗口渲染逻辑,给窗口绘制提前准备好的闪屏图片,可根据需求调整是否隐藏标题栏、设置窗口居中显示等属性。 - 监听Flutter首帧事件销毁闪屏
打开windows/runner/flutter_window.cpp,找到OnFrameAvailable回调方法,在该方法触发时发送窗口消息销毁闪屏元素,切换为Flutter渲染内容,此时过渡无感知,不会出现白屏。
可选优化
- 可在闪屏阶段用原生定时器实现加载动画、进度提示等效果,所有逻辑均在Windows原生层完成
- 可配置闪屏窗口与后续Flutter主窗口的尺寸、位置完全一致,实现无跳变的无缝过渡效果
内容的提问来源于stack exchange,提问作者OroshiX
相关产品推荐
相关产品推荐

