5.9 KiB
Flutter
Flutter ist ein von Google entwickeltes quelloffenes Benutzerschnittstellen-Entwicklungs-Kit, welches die effiziente Entwicklung ansprechender Benutzeroberflächen für mobile, Web- und Desktop-Anwendungen ermöglichen soll [@googleinc.FutterBuildAny]. Es wurde 2017 von Google veröffentlicht und ist BSD-lizenziert [@3ClauseBSDLicense2011].
Die zunehmende Verbreitung mobiler Geräte und Betriebssysteme stellt die effiziente Anwendungsentwicklung vor Herausforderungen. Plattformübergreifende Frameworks wie Flutter zielen darauf ab, diese Herausforderungen zu mildern, indem sie ein einheitliches Toolset zum Erstellen von Benutzeroberflächen bereitstellen, die nahtlos über verschiedene Plattformen hinweg funktionieren. Dieses Kapitel befasst sich mit der grundlegenden Architektur von Flutter, welche die Konzepte erklärt wie Flutter auch im eingebetteten Bereich genutzt werden kann.
Flutters Architektur
Flutter verwendet eine modulare, geschichtete Architektur. Dieses Design besteht aus unabhängigen Bibliotheken, die jeweils von der darunter liegenden Schicht abhängig sind, was lose Kopplung und Flexibilität gewährleistet. Dieser Ansatz fördert die Anpassbarkeit und die Möglichkeit, Framework-Komponenten nach Bedarf zu ersetzen. [@FlutterArchitecturalOverviewb]
Die folgende Abbildung \ref{flutterArch} zeigt die Architektur von Flutter:
\begin{figure}[ht]
\centering
\caption{Flutter Architektur}
\includegraphics[width=9cm]{assets/flutter/archdiagram.png}
\label{flutterArch}
<!-- prettier-ignore -->
\caption*{
Quelle: @FlutterArchitecturalOverviewb
}
\end{figure}
Das Kernelement von Flutter ist die Engine, die in C/C++ geschrieben ist. Sie ist für das Rastern zusammengesetzter Szenen verantwortlich, sobald ein neues Bild gezeichnet werden muss. Sie übernimmt alle Aufgaben zur Darstellung der Benutzeroberfläche.
Auf der Engine liegt das Flutter-Framework, das in der Programmiersprache Dart geschrieben ist. Diese Ebene bietet ein modernes, reaktives Framework, das zum Aufbau der Benutzeroberfläche verwendet wird. In der Entwicklung von Flutter Anwendungen wird meistens nur diese Flutter-Framework Ebene verwendet und die komplette Flutter Anwendung wird meist nur im Framework Teil in Dart geschrieben.
Die niedrigste Ebene ist der Embedder, dessen Aufgabe es ist, die Rendering-Fläche bereitzustellen, die Eingaben zu verarbeiten und Zugriff zu Dart Anwendungs-Snapshots zu ermöglichen. [@gardeFlutterRaspberryPi2018] Die Flutter Engine hat hierzu eine C API, welche in einer einzelnen C Header-Datei definiert ist. [@theflutterauthorsEngineShellPlatform] Diese API Punkte müssen von dem Embedder angesprochen werden.
Der modulare Aufbau mit der Trennung der Embedder-Ebene erlaubt es, dass jeder Entwickler einen eigenen Embedder für spezielle Verwendungszwecke von Flutter entwickeln kann. Es müssen nur diese API Punkte angesprochen werden und die komplette Flutter Engine mit allen plattformunabhängigen Funktionen könnte sofort genutzt werden. Im Laufe der Arbeit werden die Embedder "Flutter-Pi" und "Flutter-Auto" vorgestellt, welche in dem Projekt der Fallstudie genutzt und weiter untersucht worden sind. Beides sind spezielle Embedder, welche außerhalb von Google und für die Nutzung von Flutter mit eingebetteten Linux Systemen entwickelt worden sind.