Mam 2 ekrany w mojej aplikacji Flutter: lista nagrań i ekran do tworzenia i edycji rekordów.
Jeśli przekażę obiekt na drugi ekran, oznacza to, że zamierzam go edytować, a jeśli przekażę wartość null, oznacza to, że tworzę nowy element. Ekran edycji to widget Stateful i nie jestem pewien, jak zastosować to podejście https://flutter.io/cookbook/navigation/passing-data/ w moim przypadku.
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) {
//.....
}
}
Jak mogę uzyskać dostęp do recordObject w _RecordPageState ?
Odpowiedzi:
Aby użyć recordObject w _RecordPageState, musisz po prostu napisać widget.objectname jak poniżej
źródło
recordObject
powinno być częściąState
zajęć? Logicznie rzecz biorąc, posiadanie goStatefulWidget
jest nieprawidłowe (pod względem spójności). Poza tym wszystkie polaStatefulWidget
powinny być niezmienne - a co jeśli chcesz zmienićrecordObject
odniesienie?Text(widget.recordObject)
, mówi, że mój var jest zerowyźródło
recordObject
pola zarówno na zajęciach, jakState
i naStatefulWidget
zajęciach było takim dobrym pomysłem (chociaż widziałem tutoriale robiące dokładnie to). Podejście do uzyskiwania dostępu do pólStatefulWidget
za pomocąwidget
polaState
klasy wydaje się bardziej poprawnym podejściem (chociaż ma swoje własne problemy)Pełny przykład
Nie musisz przekazywać parametrów do State za pomocą jego konstruktora. Możesz łatwo uzyskać do nich dostęp za pomocą widget.myField .
Przekaż swoje dane podczas nawigacji na ekranie:
źródło