Flutter Windows应用在发布模式下无法启动。

3

我刚在Windows上创建了一个Flutter项目

flutter create appname --platforms=windows,macos

现在我可以使用以下方式启动这个Windows应用程序

flutter run -d windows

一切都运行得很完美。 但问题是我无法在发布模式下启动Windows应用程序。我尝试过:

flutter run --release -d windows

但是应用程序窗口没有显示出来,我只能在任务管理器中看到进程正在运行。由于它是使用 flutter create 获取的模板项目,所以没有必要向您展示项目代码。没有任何一行被修改。

发布模式在其他所有平台上都可以工作,包括 Web 和 macOS。我也尝试手动启动 .exe 文件,但也不起作用。我还尝试切换到 flutter 的主版本,但最新的主版本也无法正常工作。

flutter doctor -v 没有显示任何错误:

[✓] Flutter (Channel master, 3.9.0-17.0.pre.7, on Microsoft Windows [Version 10.0.22621.1413], locale de-DE)
    • Flutter version 3.9.0-17.0.pre.7 on channel master at C:\Program Files\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 785ea2a4c9 (2 hours ago), 2023-03-24 13:01:07 -0400
    • Engine revision 7b91f9d08f
    • Dart version 3.0.0 (build 3.0.0-365.0.dev)
    • DevTools version 2.22.2

[✓] Windows Version (Installed version of Windows is version 10 or higher)

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at C:\Users\User\AppData\Local\Android\sdk
    • Platform android-31, build-tools 31.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2022 17.5.3)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.5.33516.290
    • Windows 10 SDK version 10.0.22621.0

[✓] Android Studio (version 4.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)

[✓] IntelliJ IDEA Ultimate Edition (version 2021.1)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA 2021.1.2
    • Flutter plugin version 58.0.3
    • Dart plugin version 211.7665

[✓] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.22621.1413]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 111.0.5563.111
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 111.0.1661.51

[✓] Network resources
    • All expected network resources are available.

• No issues found!
2个回答

2

如果您像@Zensonaton的答案中提到的那样编辑windows/runner/flutter_window.cpp,它会起作用。但是我通过在MaterialApp中添加一个restorationScopeId来修复它,就像这样:

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      restorationScopeId: "Test", // <-- Add this line
      home: Scaffold(
        body: Container()
      )
    );
  }
}

1
看起来这是Flutter的一个bug?
编辑windows/runner/flutter_window.cpp,替换这一行:
flutter_controller_->engine()->SetNextFrameCallback([&]() {
    this->Show();
});

使用这个:

this->Show();

源码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接