Cross-Plattform: Flutter und Dart zielen auf Schlankheit und Null Safety

Das Framework Flutter 1.17 setzt unter iOS auf Metal, und die Programmiersprache Dart 2.8 bringt eine erweiterte Paketverwaltung und bereitet Null Safety vor.

In Pocket speichern vorlesen Druckansicht 8 Kommentare lesen
CrossPlatform: Flutter und Dart erweitern die Entwicklertools
Lesezeit: 5 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Google hat die Programmiersprache Dart in Version 2.8 und passend dazu das Cross-Plattform-Framework Flutter 1.17 veröffentlicht. Die Releases erscheinen mit gut zwei Monaten Verspätung, da eigentlich eine vierteljährliche Update-Phase geplant war. Als Grund nennt das Flutter-Team vor allem die Neuaufstellung des Release-Prozesses.

Dass Dart und Flutter im Doppelpack erscheinen, ist dagegen inzwischen das standardmäßige Vorgehen. Im Dezember 2019 hatte Google die stabilen Releases Dart 2.7 und Flutter 1.12 ebenfalls gemeinsam veröffentlicht. Flutter ist ein Framework zum Erstellen von Cross-Plattform-Anwendungen, die neben Apps für die mobilen Plattformen iOS und Android inzwischen auch Webapplikationen abdecken.

Dazu setzt es auf die Programmiersprache Dart, die Google einst als Alternative zu JavaScript ins Rennen geschickt hat, die aber nach der anfänglichen Euphorie als allgemeine Sprache weit weniger erfolgreich war als andere Ansätze wie Microsofts TypeScript. Spätestens seit der Veröffentlichung von Dart 2.0 konzentriert sich die Sprache auf den Einsatz im Flutter-Framework.

Das aktuelle Flutter-Release bringt im Vergleich zur letzten stabilen Variante vom Dezember 2019 neben zahlreichen Bugfixes vor allem Optimierungen für eine erhöhte Performance und geringeren Speicherbedarf mit. Auf 1.17 aktualisierte Apps sollen ohne weitere Anpassungen deutlich schlanker sein als unter Version 1.12. Besonders deutlich ist der Performancegewinn wohl unter iOS.

Mehr Infos

Flutter

Die wesentliche Neuerung für Apples mobiles Betriebssystem ist die Umstellung auf die Metal-API. Für ältere Geräte ohne Apples Grafikschnittstelle, also solche mit einem SoC (System on a Chip) vor dem A7 beziehungsweise mit einem älteren Betriebssystem als iOS 10, setzt Flutter weiterhin auf OpenGL. Ein FAQ im Flutter-Wiki bringt einige Antworten zum Zusammenspiel des Frameworks mit Metal.

Das Flutter-Team hat zudem das Material-Design-System von Google erweitert. Flutter 1.17 bringt unter anderem ein NavigationRail-Widget für eine Navigation, die vor allem auf Responsive Design ausgelegt ist und sich an unterschiedliche Gestaltung für mobile und Desktop-Anwendungen anpassen lässt.

Das NavigatonRail-Widget passt sich flexibel dem Display an und kann bei Bedarf auf- und zuklappen.

(Bild: Google)

Außerdem gibt es einige Ergänzungen zu bestehenden Widgets: So ist der DatePicker an die aktualisierten Material-Design-Richtlinien für mobile Kalender angepasst. Die Anbindung an Schriftarten über die TextStyles haben die Flutter-Entwickler ebenso erweitert. Außerdem lassen sich Googles Schriftarten nun dank Fonts for Flutter einfach einbinden. Das Projekt hat Ende April Version 1.0.0 erreicht.

Die Verbesserungen für Dart 2.8 zielen vor allem auf das Ökosystem für Packages. Der Paketmanager pub kann zugunsten der Performance neuerdings mehrere Pakete parallel herunterladen. Außerdem bringt er den neuen Unterbefehl outdated mit.

Damit lassen sich Versionen finden, die noch nicht in der pubspec-Beschreibung aufgeführt sind. Der Befehl zeigt neben der aktuell installierten Variante von Paketen die jeweils neueste sowie das letzte erlaubte Upgrade, das potenziell durch ein Lock festgesetzt wurde, wie folgendes Beispiel aus dem Flutter-Blog zeigt:

$ pub outdated

Dependencies Current Upgradable Resolvable Latest
foo 1.3.0 1.3.1 1.3.1 1.3.1
bar 2.0.1 2.1.0 3.0.3 3.0.3

1 upgradable dependency is locked (in pubspec.lock)
to an older version.

To update it, use `pub upgrade`.

1 dependency is constrained to a version that is older than a
resolvable version.

Die Ausgabe zeigt an, dass neben der Upgradable-Version 2.1.0 für bar eine neue Hauptversion verfügbar ist, die sich über eine Anpassung der Datei pubspec.yaml verwenden ließe. Nach entsprechenden Änderungen und einer Aktualisierung über pub updgrade sollte der Paketmanager eine Erfolgsmeldung ausspucken:

$ pub outdated

Dependencies Current Upgradable Resolvable Latest

all up-to-date

Mittelfristig soll Dart eine erweiterte Null Safety erhalten: Eine Erweiterung des Typsystems führt Variablen ein, die stets Non-Nullable sind. Da sich der Compiler und die Laufzeitumgebung in dem Fall darauf verlassen können, dass diese Variablen niemals den Wert null haben, können sie entsprechende Optimierungen vornehmen.

Durch die Umstellung wird es einige Breaking Changes geben, die bei bestehenden Anwendungen zu Inkompatibilitäten führen. Allerdings sind laut Einschätzung des Dart-Teams nur wenige Anwendungen davon betroffen. Ein Issue auf GitHub führt die Änderungen für Null Safety und die damit verbundenen Kompatibilitätsprobleme auf.

Insgesamt sieht Google Flutter und Dart weiter auf Erfolgskurs. In einem Blogbeitrag von Ende April ist von insgesamt 2 Millionen Entwicklern die Rede, die bisher Flutter genutzt hätten. Etwa 500.000 Entwickler nutzen Flutter demnach aktiv jeden Monat. Das Dart-Team spricht von 10.000 Paketen, die im Paketverzeichnis pub.dev verfügbar sind.

Weitere Details zu den neuen Versionen lassen sich der Ankündigung von Dart 2.8 und der Mitteilung zu Flutter 1.17 entnehmen. Sowohl die Programmiersprache als auch das Cross-Plattform-Framework sind Open-Source-Projekte, für die jeweils Repositories auf GitHub existieren. (rme)