From e226a0ac982aa0f8f80d1611bc99f10c5be3eef1 Mon Sep 17 00:00:00 2001 From: Jonas Franz Date: Thu, 24 Feb 2022 23:42:40 +0100 Subject: [PATCH] Add infrasturture for redux --- chapters/basics/state-management.tex | 2 +- chapters/evaluation/evaluation.tex | 1 + chapters/evaluation/redux.tex | 26 ++++++++++++++++++++++++++ thesis.tex | 3 ++- 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 chapters/evaluation/redux.tex diff --git a/chapters/basics/state-management.tex b/chapters/basics/state-management.tex index d5a1320..9a7ef34 100644 --- a/chapters/basics/state-management.tex +++ b/chapters/basics/state-management.tex @@ -195,7 +195,7 @@ class ConsumingWidget extends ConsumerWidget { Bei \texttt{flutter\_riverpod} werden die bereits eingeführten Widget-Typen \texttt{StatefulWidget} und \texttt{StatelessWidget} durch neue Typen ergänzt beziehungsweise ersetzt. Einer dieser neuen Typen ist \texttt{ConsumerWidget}. Durch das Erben von dieser Klasse, wird der \texttt{build}-Methode des Widgets eine neue Variable ergänzt, über die der Zustand von Riverpod-Providern abgefragt werden kann, wie in \autoref{lst:ConsumerWidget} zu sehen ist. Die hier verwendete \texttt{watch}-Methode bewirkt, dass das Widget neu gebaut wird, wenn sich der betreffende Provider ändert. \subsection{Redux} - +\label{sec:redux} Redux ist eine Zustandsverwaltungssystem, welches ursprüunglich für React enwickelt worden ist. React ist ein JavaScript-Bibliothek zum Bauen von Benutzeroberflächen. Da React und Flutter ähnliche Techniken wie Widgets oder das State-Prinzip verwenden, lässt sich dieser Ansatz auf Flutter und Dart übertragen. Redux basiert auf drei grundlegenden Prinzipien: diff --git a/chapters/evaluation/evaluation.tex b/chapters/evaluation/evaluation.tex index 7d20a28..f95dff1 100644 --- a/chapters/evaluation/evaluation.tex +++ b/chapters/evaluation/evaluation.tex @@ -19,6 +19,7 @@ Dieser Ansatz konnte nicht die Mindestanforderungen an die Beispielanwendung ums \input{chapters/evaluation/bloc.tex} \input{chapters/evaluation/provider.tex} \input{chapters/evaluation/riverpod.tex} +\input{chapters/evaluation/redux.tex} \newpage \section{Übersicht} diff --git a/chapters/evaluation/redux.tex b/chapters/evaluation/redux.tex new file mode 100644 index 0000000..c0dffa3 --- /dev/null +++ b/chapters/evaluation/redux.tex @@ -0,0 +1,26 @@ +\section{Redux} +\label{eval:redux} + +Riverpod stellt eine externe Bibliothek zur Zustandsverwaltung dar, welche das Konzept von Provider erweitert und laut eigenen Angaben verbessert. Die Grundlagen dazu sind im \autoref{sec:redux} nachzuvollziehen. + +\subsection{Implementierung} + + +\subsection{Bewertung} + +Im folgenden Abschnitt wird die Implementierung mit Redux \autocite[branch=redux]{repo} anhand der definierten Bewertungskriterien bewertet. + +\paragraph{\nameref{sec:changeablility}} + +\paragraph{\nameref{sec:testability}} + +\paragraph{\nameref{sec:efficiency}} Nach der Ausführung der Teststrecke, ergaben die Zähler folgendes Ergebnis: +\lstinputlisting[caption={Anzahl der Render-Vorgänge bei Redux}]{results/redux/benchmarks.txt} + +\paragraph{\nameref{sec:complexity}} Die Auswertung der Metriken (vgl. \autoref{metrics:redux}) ergab eine \ac{mi} von 82 für das gesamte Projekt. + +\paragraph{\nameref{sec:readability}} + +\paragraph{\nameref{sec:documentation}} + +\paragraph{\nameref{sec:structure}} \ No newline at end of file diff --git a/thesis.tex b/thesis.tex index 75087de..a63e514 100644 --- a/thesis.tex +++ b/thesis.tex @@ -115,7 +115,8 @@ \input{results/inheritedwidget/metrics.tex}\newpage \input{results/bloc/metrics.tex}\newpage \input{results/provider/metrics.tex}\newpage -\input{results/riverpod/metrics.tex} +\input{results/riverpod/metrics.tex}\newpage +\input{results/redux/metrics.tex} %************************************************************************* % Other Stuff in the Back %*************************************************************************