MVVM Design Pattern in Flattern
wir versuchen zu entwickeln, ein flattern app und wir erstellen eine stateful-widget als eine Seite .
wir möchten separaten build-Funktion von anderen Status-Variablen und state-Funktion in 2 unterschiedlichen Datei, die build-Funktion können Sie den Zugang zu this
des Staates Klasse
wir erstellen eine Klasse :
PageClassState extend State<PageClass>{
string value = 'string value';
}
und erweitern Sie es in einer neuen Klasse, die den Zugriff auf PageClassState
this
variable
wir schreiben :
PageClassView extend PageClassState{
@override
Widget Build(){
return(new Text(this.value))
}
}
aber in PageClassState
wir eine Fehlermeldung erhalten, sagen wir überschreiben muss build-Methode in der Klasse . gibt es irgendeine Idee um das problem zu beheben und implementieren von MVVM Design pattern in flattern?
- Sie können den Gültigkeitsbereich Modell statt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich schlage vor, Sie bewegen Ihre ViewModel-code in einer separaten Klasse, die nicht verlängern
State
. Halten Sie das ViewModel unabhängig von der Plattform.Ihre Widgets Zustand kann eine Instanz der viewModel-und mit ihm interagieren.
Finden Sie eine ausführlicheres Beispiel hier
Wenn das Kind Widgets zugreifen zu können, müssen Sie Ihre ViewModel können Sie ein Widget Geerbt wie vorgeschlagen von @Rémi Rousselet.
Ich habe schnell realisiert dies für Sie:
Kind-widgets können schnappen Sie sich das ViewModel durch den Aufruf
Lassen Sie mich wissen, wenn Sie Fragen haben 🙂
Das ist nicht der richtige Ansatz. Sie sollten nicht split
State<T>
und es istbuild
Methode.Die Sache ist, nicht verlängern widgets. Sie Komponieren.
Einen richtigen Weg zu erreichen, etwas ähnliches zu verwenden
InheritedWidget
. Diese halten Sie Daten, aber nichts anderes tun. Und es werden Kinder in der Lage sein, zu verlangen, diese Daten über eineMyInherited.of(context)
.Könnte man auch eine
builder
. So etwas wie :Den mvvm Paket, Ein Flattern MVVM (Model-View-ViewModel) Umsetzung.
vollständiges Beispiel