2017-08-29 2 views
-1

Ich lerne Dart/Flattern und versuche zu verstehen, wie das Widgets-System funktioniert. Aber ich kann nicht verstehen, welchen Unterschied zwischen staatenlosen und Stateful Widgets? Zum Beispiel habe ich Knopf. Welchen Typ hat es?Welchen Unterschied zwischen zustandslosen und Stateful Widgets?

Stellen wir uns zwei Fälle vor. Ich sende Text an Taste und es wird angezeigt. Ich sende Text zum Knopf und es ist Farbe ändern.

Was wird sein, wenn ich nicht richtigen Widget-Typ erstellen werde?

+0

Meinst du "zustandslos" und "stateful"? – EJP

Antwort

0

Überprüfen Sie die Flutter Interactivity Tutorial. Wenn die build-Methode Ihres Widgets vollständig von seinen unveränderlichen Konstruktorargumenten abhängt, sollten Sie StatelessWidget verwenden, da diese einfacher sind. Wenn Sie persistente private Daten speichern möchten, von denen Sie erwarten, dass sie im Laufe der Zeit mutieren, verwenden Sie StatefulWidget und speichern Sie die Daten unter State.

1

Es gibt 3 Arten von Widgets, nicht nur 2.

  • Stateful-Widget
  • Stateless-Widget
  • Inherited Widget

A staatenlos Widget wie eine Konstante ist. Es ist unveränderlich. Wenn Sie die Anzeige eines zustandslosen Widgets ändern möchten, müssen Sie eine neue erstellen.

Stateful Widgets sind das Gegenteil. Sie sind am Leben und können mit dem Benutzer interagieren. Stateful Widgets haben Zugriff auf eine Methode namens setState, die im Grunde zu dem Framework sagt "Hallo, ich möchte etwas anderes anzeigen. Kannst du mich bitte neu zeichnen?".

Schließlich ist das vererbte Widget eine Mischung aus beiden Welten. Es ist unveränderlich und staatenlos. Aber ein anderes Widget (was auch immer es ist) kann dieses geerbte Widget abonnieren. Das bedeutet, dass beim Ersetzen des geerbten Widgets durch ein neues Widget alle Widgets, die das alte Widget abonniert haben, neu gezeichnet werden.

Am Ende wird normalerweise ein Stateful-Widget wie ein Controller verwendet. Ein zustandsloses Widget wird wie eine Ansicht verwendet. Und das geerbte Widget wird Ihre Konfigurationsdatei oder Ihr Modell sein.

Verwandte Themen