我有两个小部件:
-
报告表
-
报告细节
我正试图将报表数据从repostlist小部件传递到reportdetail小部件,并再次调用api以在reportdetail小部件中获取有关报表的更多信息。
在我的报告列表中,导航的工作方式如下:
onPressed: () {
Navigator.push(context, new MaterialPageRoute(builder: (context){
return new ReportDetail(reports[i]);
}));
},
我的reportdetail类:
class ReportDetail extends StatefulWidget {
final report;
ReportDetail({Key key, @required this.report}) : super(key: key);
@override
ReportDetailState createState() {
return new ReportDetailState();
}
}
class ReportDetailState extends State<ReportDetail> {
var report;
Color mainColor = const Color(0xff3C3261);
void getData() async {
debugPrint(this.report);
var report = await getReport(this.report['id']);
setState(() {
this.report = report;
});
}
@override
Widget build(BuildContext context) {
getData();
if (this.report == null) {
debugPrint(this.report);
return new Scaffold(
appBar: new AppBar(
title: new Text("Loading..."),
),
);
} else {
var list = (report['items'] as List)
.map((item) =>
TableRow(children: [
Text(item['id'].toString()),
Text(item['report_id'].toString()),
Text(item['place'])
]))
.toList();
list.insert(
0,
TableRow(children: [
Text("R1"),
Text("R2"),
Text("R3"),
]));
return Scaffold(
appBar: AppBar(title: Text(report['name'])),
body: Container(child: Table(children: list)));
}
}
}
我有两个问题:
-
我的报告列表中出现以下错误:
位置参数太多:应为0,但找到1。
-
在reportdetail小部件中,如何确保在创建表之前从我的api获得数据(请求已完成,this.report现在包含数据)?