Flutter 3.13 修复了一个可能导致窗口无法显示的错误。使用 Flutter 3.7 或 Flutter 3.10 创建的 Windows 项目需要进行迁移以修复此问题。

迁移步骤

#

使用 flutter --version 验证您使用的是 Flutter 3.13 或更高版本。如果需要,请使用 flutter upgrade 更新到最新版本的 Flutter SDK。

尚未修改其 windows/runner/flutter_window.cpp 文件的项目将通过 flutter runflutter build windows 自动迁移。

已修改其 windows/runner/flutter_window.cpp 文件的项目可能需要手动迁移。

迁移前的代码

cpp
flutter_controller_->engine()->SetNextFrameCallback([&]() {
  this->Show();
});

迁移后的代码

cpp
flutter_controller_->engine()->SetNextFrameCallback([&]() {
  this->Show();
});

// Flutter can complete the first frame before the "show window" callback is
// registered. The following call ensures a frame is pending to ensure the
// window is shown. It is a no-op if the first frame hasn't completed yet.
flutter_controller_->ForceRedraw();

示例

#

PR 995 展示了 Flutter Gallery 应用的迁移工作。