[dart] StatefulWidget에 데이터를 전달하고 Flutter의 상태에서 액세스

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")));


답변