From a641b39c56b1d18146c0c013ce5b123227f501f1 Mon Sep 17 00:00:00 2001 From: Jonas Franz Date: Fri, 25 Feb 2022 02:31:19 +0100 Subject: [PATCH] Add implementation of redux --- chapters/evaluation/evaluation.tex | 2 +- chapters/evaluation/redux.tex | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/chapters/evaluation/evaluation.tex b/chapters/evaluation/evaluation.tex index f95dff1..7e9dd27 100644 --- a/chapters/evaluation/evaluation.tex +++ b/chapters/evaluation/evaluation.tex @@ -40,7 +40,7 @@ Dieser Ansatz konnte nicht die Mindestanforderungen an die Beispielanwendung ums \ac{bloc} & \cmark & \cmark & 8;4 & 82 & \xmark & \cmark & / \\ Provider & / & \cmark & 3;4 & 83 & / & \cmark & \xmark \\ Riverpod & \cmark & \cmark & 3;4 & 80 & \cmark & \cmark & \xmark \\ - Redux & TBD & TBD & TBD & TBD & TBD & TBD & TBD \\ + Redux & TBD & TBD & 8;10 & 82 & TBD & TBD & TBD \\ MobX & TBD & TBD & TBD & TBD & TBD & TBD & TBD \\ \bottomrule \multicolumn{8}{c}{Legende: \cmark=vollständig erfüllt; /=teilweise erfüllt; \xmark=nicht erfüllt;}\\ diff --git a/chapters/evaluation/redux.tex b/chapters/evaluation/redux.tex index c0dffa3..dfcdd7b 100644 --- a/chapters/evaluation/redux.tex +++ b/chapters/evaluation/redux.tex @@ -5,6 +5,13 @@ Riverpod stellt eine externe Bibliothek zur Zustandsverwaltung dar, welche das K \subsection{Implementierung} +Für die Implementierung mit Redux wurden die Bibliotheken redux in der Version 5.0.0 und flutter\_redux in der Version 0.8.2 genutzt. + +Anstelle von mehreren Zuständen wurde hier ein zentraler Zustand implementiert, der auch als Store bezeichnet wird. Um Änderungen an diesem Store durchzuführen wurden diverse Actions definiert wie beispielsweise eine Action für den Anmeldevorgang. Diese Actions werden von Reducern verarbeitet, welche in diesem Fall immer einen Teilzustand des zentralen Zustands verändern. + +Für den Abruf der Daten für die Produktliste wurde eine Middleware implementiert. Diese erhält von der Bibliothek alle Actions, bevor diese von einem Reducer bearbeitet werden. Die Middleware führt im Falle, dass eine entsprechende Action ausgelöst wird, die Netzwerkzugriffe durch und emittiert danach entsprechende Actions, welche durch Reducer die Daten in den Store übermitteln. Middlewares sind notwendig, da Reducer keine asynchronen Operationen durchführen sollen, da diese keine Nebeneffekte haben dürfen und bei gleicher Eingabe immer das gleiche Ergebnis liefern müssen. \autocite[vgl.][Kap1.3.3]{redux} + +Für die Einbindung in die Benutzeroberfläche kommen zwei verschiedene Möglichkeiten zum Einsatz. Zum einen existiert der StoreConnector, welcher einen bestimmten Teil des zentralen Zustands selektiert und diesen an ein Widget weitergibt. Zum anderen gibt es den StoreBuilder, welcher den kompletten Store an ein Widget weitergibt. Der StoreConnector wird hauptsächlich bei trivialeren Einsatzgebieten verwendet, die nur das Auslesen einer Variable aus dem Store benötigen. Der StoreConnector hingegen bei komplexeren Fällen, die beispielsweise auch Actions depeschieren müssen. \subsection{Bewertung}