我将ID发送到第二页,方法是单击需要在该方法中插入ID的位置,但是在第二页上,该ID仅在窗口小部件中可见,而null在方法中显示。 在这里,我将ID发送到第二页。
Navigator.push(context,
MaterialPageRoute(builder: (context) => new JobPage(value: (_jobsDetails.jobs[Index]['jobFullViewDto']['id']).toString())));
值初始化。
final String value;
JobPage({Key key, @required this.value}) : super(key: key);
我可以在第二页的小部件中看到ID。
@override
Widget build(BuildContext context) {print(widget.value);
但是我需要在方法中添加id。 在方法ID中为null。
Future<JobDetail> _getAsyncJobDetail() async {
UserService userService = new UserService();
print("widgetId***" + widget.value);
JobDetail details = await userService.jobDetails(widget.value); //null
return details;}
JobPage
class JobPage extends StatefulWidget {
final String value;
JobPage({Key key, @required this.value}) : super(key: key);
@override
_JobPageState createState() => new _JobPageState();
}
class _JobPageState extends State<JobPage> {
JobDetail _jobDetails = new JobDetail();
double pageWidth;
double pageHeight;
_JobPageState() {
_getAsyncJobDetail().then((val) => setState(() {
_jobDetails = val;
}));
}
Future<JobDetail> _getAsyncJobDetail() async {
UserService userService = new UserService();
print("widgetId***" + widget.value);
JobDetail details = await userService.jobDetails(widget.value);
return details;
}
@override
Widget build(BuildContext context) {
print(widget.value);
this.pageWidth = MediaQuery.of(context).size.width - 10;
this.pageHeight = MediaQuery.of(context).size.height;
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"${_jobDetails.position}",
style: TextStyle(
fontSize: 15,
),
),
],
);
答案 0 :(得分:1)
不要在State的构造函数中进行所有准备工作(不建议这样做),并且由于Text
小部件依赖于要返回的Future
,因此应使用{ {1}}。
FutureBuilder