Noch etwas flatterhaft: Cross-Plattform-Entwicklung mit Flutter

Flutter war von Anfang an sowohl für Android als auch für iOS verfügbar. Mittlerweile gibt es Portierungen für eine Vielzahl anderer Systeme. Der Artikel betrachtet Flutter für Linux und Flutter für das Web.

Werkzeuge  –  20 Kommentare

(Bild: Shutterstock)

Entwickler können eine Flutter-Applikation am Desktop ausführen, indem sie sie in einen Emulator verpacken. Diese Vorgehensweise ist allerdings nicht besonders vernünftig, weshalb Google für den Desktop als Shell bezeichnete Programme vorsieht. Wichtig ist hierbei die Warnung auf der Webseite des Projekts, die darauf hinweist, dass alle Desktop-Shells derzeit noch Prototypen sind.

Aufgrund der großen Nähe von macOS und iOS folgt, dass die Shell für den Mac als "besonders stabil" gilt. Größere Breaking Changes dürften, so zumindest die Meinung der Entwickler, nicht mehr auftreten. Wer mit Flutter für Windows oder Linux arbeitet, muss hingegen mit unschöneren Ergebnissen rechnen. Die praktische Auswirkung dieser API-Brüche dürfte für die meisten Entwickler allerdings kaum spürbar sein, da sie nur selten (Stichwort Plug-in) direkt mit der Shell interagieren.

Android Studio meldet sich bei jedem Start, wenn das Flutter-Plug-in veraltet ist. Der in der IDE enthaltene Update-Mechanismus ist jedoch nicht in der Lage, die Flutter-Version auf den aktuellen Stand zu bringen. Die Lösung dafür findet sich im Download-Verzeichnis, wo Entwickler nach dem folgenden Schema ein Update beziehen können:

~/Downloads/flutter/flutter/bin$ ./flutter upgrade
Upgrading Flutter from /home/tamhan/Downloads/flutter/flutter...
From https://github.com/flutter/flutter

Aufgrund der Instabilität der Desktop- und auch der Webwerkzeuge verlangt Google, dass die Basisversion des Filter-Codes auf "Master" zu setzen ist. Es handelt sich dabei um die Spitze des Versionskontrollsystembaums, weshalb es bei der praktischen Nutzung zu diversen Problemen kommen kann. Die bei vielen Entwicklern beliebtere Baseline "Beta" ist nicht zulässig.

Von Hand heruntergeladene Installationen des SDKs sitzen normalerweise im Beta-Channel, weshalb im ersten Schritt folgende Kommandofolge erforderlich ist:

./flutter channel master
Switching to flutter channel 'master'...
...
./flutter upgrade

Am Ende jedes Durchlaufs sehen Entwickler, wie in Abbildung 1 gezeigt, die Ergebnisse der Ausführung des device-Kommandos. Es informiert auf der Kommandozeile darüber, welche Zielsysteme mit dem PC verbunden sind.

Die Workstation erkennt sich selbst nicht als Deployment-Ziel (Abb. 1).

Das Problem lässt sich umgehen, indem man das folgende Kommando eingibt, um die Konfiguration anzupassen:

./flutter config --enable-linux-desktop
Setting "enable-linux-desktop" value to "true".

Wer nicht unter Linux arbeitet, muss stattdessen ein anderes Plattformaktivierungskommando verwenden:

flutter config --enable-macos-desktop 
flutter config --enable-windows-desktop

Lohn der Mühen ist jedenfalls, dass flutter devices die Workstation als Zielgerät erkennt:

Auch Ubuntu 18.04 nimmt ab sofort Flutter-Code entgegen (Abb. 2).

In der Praxis ist an dieser Stelle noch ein weiterer Lauf von flutter doctor empfehlenswert, der mitunter Konfigurationsfehler findet (Abb. 3):

Clang ist für das Kompilieren von Desktop-Code erforderlich (Abb. 3).

Im gezeigten Szenario fehlt beispielsweise die Ausführungsumgebung, die man nach folgendem Schema nachinstalliert:

sudo apt-get install clang

Am Ende der Konfigurationsarbeiten sollte ein grüner Haken neben der Zielplattform erscheinen – eventuelle Beschwerden über Android-Lizenzen oder Visual Studio Code ("soll falsch konfiguriert sein") sind bei der Desktop-Entwicklung irrelevant.