4.4 KiB
Architektur
Flutter gibt Entwicklern eine große Freiheit bei der Auswahl der Architektur für ihre Anwendungen. Es gibt keine festen Regeln oder Vorschriften zur Ordnerstruktur oder anderen Konventionen bezüglich der Architektur. Als Architektur für die Demo Anwendung der Fallstudie wurde eine drei-schichtige Architektur gewählt. Eine Schichtenarchitektur ist nicht nur Teil der Architektur von Flutter selbst, sondern ist auch eine bewährte Architektur für die Entwicklung von Flutter Anwendungen, sowie auch generell in der Software Entwicklung. Die drei Schichten der Architektur sind die Präsentationsschicht, die Geschäftsschicht und die Datenzugriffsschicht. In der Präsentationsschicht wird die Benutzeroberfläche mit den Flutter Widgets erstellt. Die Geschäftsschicht ist für die Implementierung der Geschäftslogik verantwortlich und die Datenzugriffsschicht für den Zugriff auf die Datenbank und die Datenverarbeitung [@hajianFlutterEngineering2024, 219]. Die drei Schichten sind voneinander unabhängig und kommunizieren nur jeweils mit der nächstliegenden Schicht wie in Abbildung \ref{schichten} dargestellt.
\begin{figure}[ht] \centering \caption{3-Schichtenarchitektur der Flutter Anwendung} \label{schichten} \end{figure}
\begin{center}
flowchart TD
A[Präsentationsschicht] <--> B
B[Geschäftslogikschicht] <--> C
C[Datenzugriffsschicht]
\end{center}
\begin{figure}[ht] \centering \end{figure}
Ordner Konventionen
Für die 3-Schichtenarchitektur wurde eine Feature-First Ordnerstruktur gewählt. Die Ordnerstruktur der fertigen Anwendung ist in Abbildung \ref{ordnerstruktur} dargestellt.
\begin{figure}[ht]
\caption{Die Ordnerstruktur der Flutter eLinux Anwendung}
\label{ordnerstruktur}
\centering
\begin{minipage}{7cm}
\dirtree{%
.1 lib/.
.2 common.
.2 constants.
.2 features.
.3 benchmark.
.3 home.
.3 material\char\_demo. .3 matrix\char
_rgb.
.3 news\char\_api. .3 settings. .3 system\char
_resources.
.2 app.dart.
.2 main.dart.
}
\end{minipage}
\end{figure}
Im Hauptverzeichnis der Anwendung befinden sich die Ordner common
,
constants
, features
und die Dateien app.dart
und main.dart
.
Der Einstiegspunkt der Anwendung ist die main.dart
Datei, diese
wird von Dart aufgerufen und startet die MaterialApp
welche in
der app.dart
Datei definiert ist. Die common
und constants
Ordner enthalten allgemeine Klassen und Konstanten, die in der
gesamten Anwendung verwendet werden. Der features
Ordner
enthält die einzelnen Features der Anwendung als Unterordner.
Jedes Feature ist hierbei eines der verschiedenen Fenster,
welches die Demo App besitzt und welche zuvor in den Anforderungen
beschrieben worden sind. Innerhalb jedes Features wird
die 3-Schichtenarchitektur umgesetzt mit den Ordnern presentation
,
business
und data
. Nicht alle Features benötigen dabei alle Schichten,
je nach Komplexität des Features.
Diese Struktur ermöglicht es, dass jedes Fenster der Demo Anwendung modular und unabhängig von den anderen Fenstern entwickelt wurde und der Code für ein Feature an einem Ort zu finden ist. Dadurch wird die Wartbarkeit und Erweiterbarkeit der Anwendung verbessert und der Code ist leichter zu verstehen. Für die Demo App ist dies besonders wichtig, da die Anwendung als Einstiegspunkt so später umstrukturiert werden kann für andere Anwendungen, die auf der Demo App aufbauen.