Implementiere ein Beobachter-Muster in Dart

8

Ich würde gerne ein Beobachtermuster in Dart implementieren, aber ich bin mir nicht sicher, wie ich das anstellen soll.

Sagen wir, ich habe eine Klasse:

%Vor%

Nun, wenn ich das Feld ändere, möchte ich die Zeichenfolge "observed_field changed" in die Konsole drucken. Ziemlich einfach mit einem benutzerdefinierten Setter zu tun:

%Vor%

Nun, natürlich, wenn ich nicht eins, aber viele dieser Felder habe, möchte ich nicht alle diese Getters und Setter erstellen. Die naheliegende theoretische Lösung besteht darin, sie der Klasse dynamisch hinzufügen zu lassen (kein funktionierender Code, nur ein Beispiel dafür, wie ich es aussehen möchte):

%Vor%

Ist das überhaupt möglich? Außerdem wäre es super, wenn diese Felder nicht über dem observe() -Aufruf definiert sind, sondern etwas wie:

geschrieben wird %Vor%

Damit diese Felder automatisch deklariert werden.

    
snitko 25.11.2013, 06:39
quelle

1 Antwort

8

Hier finden Sie eine Möglichkeit, das Observe -Paket zu verwenden. Das Beispiel stammt aus Code-Kommentaren in diesem Paket (und wurde an Ihr Beispiel oben angepasst). Im Wesentlichen notieren Sie Felder, die mit der Annotation @observable beobachtbar sein sollen, und warten dann auf Änderungen (die Sie mit dem Aufruf von Observable.dirtyCheck() auslösen;

)

Fügen Sie zuerst das beobachtbare Paket in Ihrem pubspec.yaml

hinzu %Vor%

Dann erstellen Sie ein schnelles Testprogramm ...

%Vor%

Dies erzeugt die folgende Ausgabe:

%Vor%

Aktualisieren als Antwort auf Kommentare ... Wenn Sie das Beispiel aktualisieren, um Observable.dirtyCheck() wegzulassen, können Sie einen Setter und notifyPropertyChanged verwenden, wobei die Klasse stattdessen in ChangeNotifier

mischt %Vor%     
Chris Buckett 25.11.2013, 12:29
quelle

Tags und Links