Tenho 2 telas no meu app Flutter: lista de registros e tela para criação e edição de registros.
Se eu passar o objeto para a segunda tela significa que vou editar isso e se eu passar null significa que estou criando um novo item. A tela de edição é um widget com estado e não tenho certeza de como usar essa abordagem https://flutter.io/cookbook/navigation/passing-data/ no meu caso.
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) {
//.....
}
}
Como posso acessar recordObject dentro de _RecordPageState ?
Respostas:
Para usar recordObject em _RecordPageState, você tem que escrever widget.nome do objeto como abaixo
fonte
recordObject
fazer parte daState
aula? Logicamente, inseri-loStatefulWidget
é incorreto (em termos de coesão). Além disso, todos os campos deStatefulWidget
devem ser imutáveis - e se você quiser alterar arecordObject
referência?Text(widget.recordObject)
, diz que meu var é nulofonte
recordObject
campo nas classesState
e nasStatefulWidget
classes seja uma ideia tão boa (embora eu tenha visto tutoriais fazendo exatamente isso). A abordagem de acessar campos deStatefulWidget
usandowidget
campo deState
classe parece uma abordagem mais correta (embora tenha seus próprios problemas)Exemplo Completo
Você não precisa passar parâmetros para State usando seu construtor. Você pode acessá-los facilmente usando widget.myField .
Passe seus dados ao navegar na tela:
fonte