Flutter 앱에는 기록 목록과 기록 생성 및 편집을위한 화면이 있습니다.
두 번째 화면에 개체를 전달하면 편집 할 것임을 의미하고 null을 전달하면 새 항목을 만들고 있음을 의미합니다. 편집 화면은 Stateful 위젯이며 제 경우에 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) {
//.....
}
}
_RecordPageState 내에서 recordObject에 어떻게 액세스 할 수 있습니까?
답변
_RecordPageState에서 recordObject를 사용하려면 아래와 같이 widget.objectname을 작성하면됩니다.
class _RecordPageState extends State<RecordPage> {
@override
Widget build(BuildContext context) {
.....
widget.recordObject
.....
}
}
답변
class RecordPage extends StatefulWidget {
final Record recordObject;
RecordPage({Key key, @required this.recordObject}) : super(key: key);
@override
_RecordPageState createState() => new _RecordPageState(recordObject);
}
class _RecordPageState extends State<RecordPage> {
Record recordObject
_RecordPageState(this. recordObject); //constructor
@override
Widget build(BuildContext context) {. //closure has access
//.....
}
}
답변
전체 예
생성자를 사용하여 State에 매개 변수를 전달할 필요가 없습니다. widget.myField를 사용하여 쉽게 액세스 할 수 있습니다 .
class MyRecord extends StatefulWidget {
final String recordName;
const MyRecord(this.recordName);
@override
MyRecordState createState() => MyRecordState();
}
class MyRecordState extends State<MyRecord> {
@override
Widget build(BuildContext context) {
return Text(widget.recordName); // Here you direct access using widget
}
}
탐색 화면에서 데이터 전달 :
Navigator.of(context).push(MaterialPageRoute(builder: (context) => MyRecord("WonderWorld")));