Flutter Windows 应用中的外部窗口
向 Flutter 应用添加外部窗口时的特殊注意事项
Windows 生命周期
受影响的对象
#针对 Flutter 3.13 之后版本构建、并打开非 Flutter 窗口的 Windows 应用。
概述
#向 Flutter Windows 应用添加非 Flutter 窗口时,默认不会纳入应用生命周期状态更新逻辑。例如,当外部窗口显示或隐藏时,应用生命周期状态不会正确更新为 inactive 或 hidden。因此,应用可能通过 WidgetsBindingObserver.didChangeAppLifecycle 收到不正确的生命周期状态变更。
我需要做什么?
要将外部窗口纳入该应用逻辑,窗口的 WndProc 过程必须调用 FlutterEngine::ProcessExternalWindowMessage。
为此,请在你自定义外部窗口的消息处理函数中添加以下代码。在 Win32 API 的 C++ 封装中,这通常是从窗口 WndProc 调用的类方法。具体文件与类名取决于你的应用实现。
LRESULT MyExternalWindow::MessageHandler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
std::optional<LRESULT> result = flutter_controller_->engine()->ProcessExternalWindowMessage(hwnd, msg, wparam, lparam);
if (result.has_value()) {
return *result;
}
// Original contents of WndProc...
}
除非另有说明,本文档之所提及适用于 Flutter 3.44.0 版本。本页面最后更新时间:2026-06-15。查看文档源码 或者 为本页面内容提出建议。