Tengo 2 pantallas en mi aplicación Flutter: lista de registros y pantalla para crear y editar registros.
Si paso el objeto a la segunda pantalla, significa que voy a editar esto y si paso nulo, significa que estoy creando un nuevo elemento. La pantalla de edición es un widget con estado y no estoy seguro de cómo usar este enfoque https://flutter.io/cookbook/navigation/passing-data/ para mi 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) {
//.....
}
}
¿Cómo puedo acceder a recordObject dentro de _RecordPageState ?
Respuestas:
Para usar recordObject en _RecordPageState, solo tiene que escribir widget.objectname como se muestra a continuación
fuente
recordObject
ser parte de laState
clase? Lógicamente, tenerlo dentroStatefulWidget
es incorrecto (en términos de cohesión). Además, todos los campos deStatefulWidget
deben ser inmutables. ¿Qué pasa si desea cambiar larecordObject
referencia?Text(widget.recordObject)
, dice que mi var es nulafuente
recordObject
campo tanto enState
yStatefulWidget
clases es tal idea de una buena (aunque vi tutoriales haciendo exactamente esto). El enfoque de acceder a los camposStatefulWidget
mediante el uso de unwidget
campo deState
clase parece un enfoque más correcto (a pesar de que tiene sus propios problemas)Ejemplo completo
No es necesario pasar parámetros a State usando su constructor. Puede acceder fácilmente a estos utilizando widget.myField .
Pasa tus datos cuando navegas por la pantalla:
fuente