In diesem Kapitel wird die Fallstudie vorgestellt, welche
in dieser Bachelorarbeit umgesetzt wurde.

## Anforderungen

Um die Nutzbarkeit von Flutter für die Entwicklung von
Anwendungen für eingebettete Linux Systeme zu testen,
sollte eine Demo Anwendung entwickelt werden, welche
möglichst alle wichtigen Aspekte solcher Anwendungen
abdeckt. Zur Planung wurden kurz vor der Einreichung
der Arbeit einfache Skizzen der Anwendung
entwickelt, welche in Abbildung \ref{fig:skizzen} zu sehen sind,
jede Skizze stellt eine Seite der Anwendung dar. Die
Seiten sind nummeriert und werden im folgenden genauer
erläutert.

\begin{figure}[H]
\caption{Skizzen der Anwendung}
\label{fig:skizzen}
\centering
\includegraphics[width=5in]{./assets/skizzen/alle.pdf}
\end{figure}

Die Startseite der Anwendung (1) ist freigelassen und soll nur
ein Platzhalter sein von welchem aus die verschiedenen
Funktionalitäten der Anwendung mithilfe eines Menüs
erreicht werden können. In der Skizze wird dieses Menü durch
den Hamburger Button oben links in den Fenstern dargestellt,
dieser soll beim Klicken ein Auswahlmenü für die anderen Fenster öffnen.

Die folgende Tabelle \ref{skizzenTabelle} erläutert die Funktionen, die in den
anderen Fenstern der Anwendung getestet werden sollen:

\begin{table}[H]
\caption{Funktionen der Skizzen}
\label{skizzenTabelle}
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|}
\hline
Fenster mit Nummerierung & Funktionen, die hier getestet werden sollen \\ \hline
Material 3 Widgets (2) & \begin{tabular}[c]{@{}l@{}}Anzeige von einer Auswahl von verschiedenen Material Widgets\\ zur Demonstration\end{tabular} \\ \hline
Open API Tagesschau (3) & \begin{tabular}[c]{@{}l@{}}Anzeige einer endlos scrollbaren Liste, welche Nachrichten von\\ der öffentlich zugänglichen Tagesschau API anzeigt.\end{tabular} \\ \hline
Video-Playback (4) & Test des Video-Playbacks. \\ \hline
Morse Code (5) & \begin{tabular}[c]{@{}l@{}}In einer Texteingabe soll ein Text geschrieben werden können, \\ welcher dann auf einer am Raspberry Pi angeschlossen Led\\ als Morsecode abgespielt werden soll. Die Ansteuerung der Led\\ \\ Dient als Demo für GPIO Geräte, in diesem Fall ein Output.\\ Zusätzlich soll auch eine Möglichkeit zur Eingabe des Textes\\ implementiert werden, da Flutter im eingebetteten Linux Bereich\\ nicht automatisch eine Tastatur bereitstellt.\end{tabular} \\ \hline
Pixel Matrix (6) & \begin{tabular}[c]{@{}l@{}}Auf einer 8x8 Pixel Matrix soll mit einer Farbauswahl durch\\ den Touch Input gemalt werden können. Das gemalte Bild soll\\ gleichzeitig auf eine RGB Matrix live übertragen werden,\\ welche über den SPI (Serial Peripheral Interface) angesprochen\\ wird.\end{tabular} \\ \hline
System Informationen (7) & \begin{tabular}[c]{@{}l@{}}Zwei Graphen sollen jeweils die CPU-Auslast und den\\ RAM-Verbrauch des Raspberry Pis anzeigen. Die Auslesung\\ dieser Daten soll über Linux Terminal Befehle geschehen \\ und dies demonstrieren.\end{tabular} \\ \hline
Einstellungen (8) & \begin{tabular}[c]{@{}l@{}}In den Einstellungen soll ein Nachtmodus aktiviert und\\ deaktiviert werden können, welcher das Design der kompletten\\ Anwendung live entsprechend verändert. Es soll auch das\\ WLAN des Raspberry Pis angesteuert werden können. Man soll\\ den Netzwerk Manager von Linux ansprechen und eine neue\\ Verbindung einrichten können.\end{tabular} \\ \hline
OpenStreetMap (9) & \begin{tabular}[c]{@{}l@{}}Eine Weltkarte soll live als Raster-Karte geladen werden als\\ interaktiven Leistungstest mit Multi-Touch-Gesten. Man soll rein- und\\ rauszoomen können.\end{tabular} \\ \hline
Videospiel (10) & \begin{tabular}[c]{@{}l@{}}Als Leistungstest soll ein Open Source Demo Spiel angezeigt \\ werden welches in Flutter implementiert wurde und die\\ Leistung der Render Engine von Flutter auf dem Gerät austestet. \\ Dieses soll nicht selber implementiert werden, \\ sondern es soll eines der Beispiele von Google genutzt werden.\end{tabular} \\ \hline
\end{tabular}%
}
\end{table}

In der Implementierung der Anwendung wurden manche Inhalte
der Seiten leicht abgeändert. Die größte Änderung ist die Untertrennung
mehrerer Seiten auf eine "Benchmark" Seite in der sowohl das Videospiel,
die OpenStreetMap und auch der Video-Player getestet werden können. Zusätzlich
wurde ein VSync Test und ein weiterer Spiel-Benchmark hinzugefügt. Die
fertige Anwendung ähnelt dem Plan jedoch noch stark und alle fertigen
Seiten mit ihren implementierten Funktionen werden im Kapitel \ref{features}
genauer erläutert.

## Verwendete Komponenten
