[英]How to pass Data between two Screens in Dart
我需要使用 dart 將數據發送到另一個屏幕我嘗試在另一個屏幕(editdata.dart)上創建構造函數以從主屏幕(readdata.dart)獲取數據它是有狀態的小部件問題在於: createState() => EditFire()
EditFire class 需要傳參但是我還沒有數據
編輯數據.dart:
class EditData extends StatefulWidget {
@override
//Here the Error Occurs//
State<StatefulWidget> createState() => EditFire();
}
class EditFire extends State<EditData> {
EditFire(String ID, String date, String time, String dest, String src){
currentID = ID;
olddate = date;
oldtime = time;
_destinationcontroller.text = dest;
_sourcecontroller.text = src;
}
late String currentID;
final _destinationcontroller = TextEditingController();
final _sourcecontroller = TextEditingController();
late String olddate;
late String oldtime;
}
在 readdata.dart 中:
EditFire("2","17/6/2022","2:25","NewYork","Japan");
第一頁
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(builder: (_){
return EditData("2","17/6/2022","2:25","NewYork","Japan");
}));
},
您要接收數據的第二頁
class EditData extends StatefulWidget {
String currentID;
String _destinationcontroller;
String _sourcecontroller;
String olddate;
String oldtime;
EditData(this.currentID, this._destinationcontroller, this._sourcecontroller,
this.olddate, this.oldtime, {Key? key}) : super(key: key);
@override
State<EditData> createState() => _EditDataState();
}
class _EditDataState extends State<EditData> {
@override
Widget build(BuildContext context) {
return Container(
child: Center(child:
Text('${widget.currentID}'),),
);
}
}
要將EditData的數據訪問到EditFire ,您不需要在構造函數中傳遞它。 如您所見, EditFire是EditData的 state。
因此,如果您想在EditFire中獲取EditData中使用的任何內容,您可以像widget.abc一樣使用它
class EditData extends StatefulWidget {
// here, in constructor of widget, we are gathering values.
EditData(
{required this.currentID,
required this.olddate,
required this.oldtime,
Key? key})
: super(key: key);
String currentID;
String olddate;
String oldtime;
State<StatefulWidget> createState() => EditFire();
}
// this is a state widget of EditData. so no need to pass value in constructor of state widget.
class EditFire extends State<EditData> {
final _destinationcontroller = TextEditingController();
final _sourcecontroller = TextEditingController();
String? currentID;
String? olddate;
String? oldtime;
@override
void initState() {
super.initState();
// you can get the values like this
currentID = widget.currentID;
olddate = widget.olddate;
oldtime = widget.oldtime;
}
}
要將值傳遞給 EditData,您需要將其傳遞給構造函數。 喜歡,
EditData(currentID: "", olddate: "", oldtime: "");
希望,這將解決您的問題,仍未解決請對問題發表評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.