我的Flutter应用程序中有两个屏幕:一个记录列表和一个用于创建和编辑记录的屏幕。
如果我将一个对象传递给第二个屏幕,这意味着我要编辑它,如果我传递null,这意味着我正在创建一个新项目。编辑屏幕是一个状态小部件,我不确定如何使用这种方法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中的记录对象?
要在_RecordPageState中使用记录对象,你只需要像下面这样编写widget. object tname
class _RecordPageState extends State<RecordPage> {
@override
Widget build(BuildContext context) {
.....
widget.recordObject
.....
}
}
您不需要使用它的构造函数将参数传递给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")));
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
//.....
}
}