最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Flutter 3.27.2 on Android runs black after the splash screen - Stack Overflow

programmeradmin4浏览0评论

I was recently debugging my Flutter app on Android 14 with Flutter 3.27, and there was no other special configuration for its UI rendering or anything related to UI or UX. However, when I tried to debug my Flutter app on Android 13, it went black screen after the splash screen finishes to show.

After doing research, I found this thread.

It suggests running this command: flutter run --no-enable-impeller

Unfortunately, if I deploy my app locally by pressing the green arrow to run on my physical device (developing the Flutter app with VS Code), the issue persists.

I was recently debugging my Flutter app on Android 14 with Flutter 3.27, and there was no other special configuration for its UI rendering or anything related to UI or UX. However, when I tried to debug my Flutter app on Android 13, it went black screen after the splash screen finishes to show.

After doing research, I found this thread.

It suggests running this command: flutter run --no-enable-impeller

Unfortunately, if I deploy my app locally by pressing the green arrow to run on my physical device (developing the Flutter app with VS Code), the issue persists.

Share Improve this question asked Jan 20 at 2:52 DevQtPHDevQtPH 1139 bronze badges 1
  • Attention! For future readers, while the bug is not yet fixed accordingly (by the Flutter Team). Try considering testing the given answer first (whichever you prefer), because I decided not to mark (accept) the top answer as of 24th of January 2025 just because it is situational at the moment as of its writing. – DevQtPH Commented Jan 24 at 15:47
Add a comment  | 

2 Answers 2

Reset to default 4

With thorough research, I found this official README.md file coming from official Flutter documentation: Impeller rendering engine.

Thus, I will quote some of its important notes:

Caution

The ability to disable Impeller is going to go away in a future release. Please file an issue if you need to do this in your application. A warning will be displayed on application launch if you opt-out.

I suggest that developers should watch the development with the Impeller engine if they encounter an issue while using it.

I temporarily came up with this solution to resolve the issue from my provided question:

Android
Impeller will use Vulkan on Android by default. To explicitly opt out of using Impeller, add the following to your AndroidManifest.xml under the <application> tag.

<meta-data
    android:name="io.flutter.embedding.android.EnableImpeller"
    android:value="false" />

Where Vulkan is unavailable, Impeller will fallback to Skia.

Then the issue on my Android 13 using Flutter 3.27.2 with a black screen after the splash screen resolved!

It works fine in my case of developing the Flutter app through the use of VS Code.

P.S., The term "temporary" solution is a reminder to inform you that it's not recommended for future releases of Flutter.

Edit:

According to this documentation: Impeller rendering engine:

Android

To disable Impeller when deploying your app, add the following setting to your project's AndroidManifest.xml file under the <application> tag:

<meta-data
    android:name="io.flutter.embedding.android.EnableImpeller"
    android:value="false" />

But then again, you should take note that this is not a recommended configuration, as it might be removed in Flutter's future release.

I believe that Flutter Impeller is a powerful rendering engine that must stabilize its compatibility over a wide range of devices.

As Flutter team mentioned in their doc, if you enable impeller, it shouldn't work well on some old devices which not supporting Vulkan. And from 3.27 of Flutter version, impeller is enabled by default.

You should disable the impeller with flutter run --no-enable-impeller. When you run the app from VSCode with the green Debug button, you should add that option in the VSCode launch settings file of the project.

You can find launch.json file in .vscode folder of the project which is generated automatically by VSCode.

There you can add --no-enable-impeller in the args of one configuration.

{
   "name": "android-debug",
   "request": "launch",
   "type": "dart",
   "args": [
      "--no-enable-impeller",
   ],
   "flutterMode": "debug"
},
发布评论

评论列表(0)

  1. 暂无评论