Start Debugging

Flutter 3.47 macht Impeller zum Standard-Renderer unter Windows, Linux und macOS

Flutter 3.47.0 stable stellt Desktop-Apps von Skia auf Impeller um, ohne eine Zeile Ihres Runner-Codes anzufassen. Was sich ändert, wie Sie es pro Plattform abschalten und warum diese Abschaltung nur vorübergehend ist.

Flutter 3.47.0 ist am 2026-08-12 im Stable-Kanal erschienen und bringt Dart 3.13.0 mit. Die meiste Aufmerksamkeit gilt den eigenständigen Paketen material_ui und cupertino_ui in Version 1.0, die die mit Flutter 3.44 begonnene Aufteilung fortsetzen. Die Änderung, die tatsächlich beeinflusst, wie Ihre App zeichnet, ist leiser: Impeller ist jetzt der Standard-Renderer unter Windows, Linux und macOS.

In Ihrem Projekt ändert sich nichts, und genau das ist das Problem

Der Desktop-Runner ist generierter Code, der in Ihrem Repository liegt. Deshalb liegt die Annahme nahe, ein Renderer-Wechsel käme als Template-Diff, den Sie prüfen können. Das tut er nicht. In Flutter 3.44 sieht der Windows-Einstiegspunkt so aus, und eine Renderer-Auswahl gibt es darin nicht:

flutter::DartProject project(L"data");

std::vector<std::string> command_line_arguments = GetCommandLineArguments();
project.set_dart_entrypoint_arguments(std::move(command_line_arguments));

ImpellerSwitch existiert im SDK 3.44 an keiner Stelle. Ein Update auf 3.47 lässt windows\runner\main.cpp Byte für Byte unverändert und ändert den Standardwert darunter. Wenn ein Windows- oder Linux-Build nach dem Update visuelle Regressionen zeigt, prüfen Sie zuerst den Renderer und nicht Ihren Widget-Baum.

Abschalten, pro Plattform

Für lokales Debugging deckt ein Flag alle drei Desktop-Plattformen ab:

flutter run --no-enable-impeller

Für einen bereitgestellten Build müssen Sie den Runner bearbeiten. Windows, in windows\runner\main.cpp:

flutter::DartProject project(L"data");
project.set_impeller_switch(flutter::ImpellerSwitch::Disabled);

Linux, in linux/runner/my_application.cc:

g_autoptr(FlDartProject) project = fl_dart_project_new();
fl_dart_project_set_enable_impeller(project, FALSE);

macOS, im <dict> der obersten Ebene von Info.plist:

<key>FLTEnableImpeller</key>
<false />

Behandeln Sie alle drei als Übergangslösung. Die Impeller-Dokumentation stellt fest, dass die Möglichkeit zum Abschalten in einer künftigen Version entfällt, dieselbe Abfolge wie zuvor bei iOS und Android. Nutzen Sie den Schalter, um ein Release freizugeben, und melden Sie dann den Rendering-Fehler.

Was der Wechsel bringt

Impeller adressiert Metal unter macOS und Vulkan unter Windows und Linux, statt über den OpenGL-Pfad von Skia zu laufen. Der konkrete Gewinn liegt beim Umgang mit Shadern: Impeller kompiliert sie vorab zur Build-Zeit statt bei der ersten Verwendung, und genau das beseitigt das Ruckeln beim ersten Start, über das sich Desktop- und Mobile-Nutzer seit Jahren beschweren. Flutter 3.47 aktiviert zusätzlich Signed-Distance-Field-Rendering für Text und Vektorkurven unter macOS, Linux und Windows, wodurch Glyphenkanten und Kurven schärfer werden. Wide-Gamut-Farbe ist unter macOS standardmäßig aktiv.

Der Rest von 3.47, den Sie vor dem Update lesen sollten

Die vollständige Liste steht in den Release Notes zu Flutter 3.47.0 und im Ankündigungsbeitrag. Wenn Sie eine Flutter-Desktop-App ausliefern, führen Sie Ihre visuelle Regressionssuite aus, bevor Sie den SDK-Bump mergen.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Zurück