Ich habe 2 Bildschirme in meiner Flutter-App: Liste der Datensätze und Bildschirm zum Erstellen und Bearbeiten von Datensätzen.
Wenn ich ein Objekt an den zweiten Bildschirm übergebe, bedeutet dies, dass ich dies bearbeiten werde. Wenn ich null übergebe, bedeutet dies, dass ich ein neues Element erstelle. Der Bearbeitungsbildschirm ist ein Stateful-Widget, und ich bin mir nicht sicher, wie ich diesen Ansatz für meinen Fall verwenden soll: https://flutter.io/cookbook/navigation/passing-data/ .
class RecordPage extends StatefulWidget {
final Record recordObject;
RecordPage({Key key, @required this.recordObject}) : super(key: key);
@override
_RecordPageState createState() => new _RecordPageState();
}
class _RecordPageState extends State<RecordPage> {
@override
Widget build(BuildContext context) {
//.....
}
}
Wie kann ich in _RecordPageState auf recordObject zugreifen ?
Antworten:
Um recordObject in _RecordPageState zu verwenden, müssen Sie nur widget.objectname wie unten schreiben
quelle
recordObject
nicht Teil derState
Klasse sein? Logischerweise ist esStatefulWidget
falsch (in Bezug auf den Zusammenhalt). Außerdem sollten alle Felder vonStatefulWidget
unveränderlich sein - was ist, wenn Sie dierecordObject
Referenz ändern möchten ?Text(widget.recordObject)
, es sagt, dass meine var null istquelle
recordObject
sowohl FeldState
als auchStatefulWidget
Unterricht zu haben (obwohl ich Tutorials gesehen habe, die genau dies tun). Der Ansatz des Zugriffs auf FelderStatefulWidget
mithilfewidget
desState
Klassenfelds scheint korrekter zu sein (obwohl er seine eigenen Probleme hat)Vollständiges Beispiel
Sie müssen keine Parameter mit dem Konstruktor an State übergeben. Sie können mit widget.myField einfach darauf zugreifen .
Übergeben Sie Ihre Daten, wenn Sie auf dem Bildschirm navigieren:
quelle