Dart 颤振-在小部件之间传递数据
我有两个小部件:Dart 颤振-在小部件之间传递数据,dart,flutter,Dart,Flutter,我有两个小部件: 报告列表 报告详情 我试图将报表数据从RepostList小部件传递到ReportDetail小部件,并进行另一个API调用,以在ReportDetail小部件中获取有关报表的更多信息 在我的报告列表中,导航的工作方式如下: onPressed: () { Navigator.push(context, new MaterialPageRoute(builder: (context){
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)));
}
}
}
class ReportDetail扩展StatefulWidget{
最后报告;
ReportDetail({Key,@required this.report}):super(Key:Key);
@凌驾
ReportDetailState createState(){
返回新的ReportDetailState();
}
}
类ReportDetailState扩展了状态{
var报告;
颜色mainColor=const Color(0xff3C3261);
void getData()异步{
调试打印(本报告);
var report=wait getReport(this.report['id']);
设置状态(){
this.report=报告;
});
}
@凌驾
小部件构建(构建上下文){
getData();
if(this.report==null){
调试打印(本报告);
归还新脚手架(
appBar:新的appBar(
标题:新文本(“加载…”),
),
);
}否则{
变量列表=(将['items']报告为列表)
.map((项目)=>
TableRow(儿童:[
文本(项['id'].toString()),
文本(项['report_id'].toString()),
文本(项目['place'])
]))
.toList();
list.insert(
0,
TableRow(儿童:[
文本(“R1”),
文本(“R2”),
文本(“R3”),
]));
返回脚手架(
appBar:appBar(标题:文本(报告['name']),
主体:容器(子对象:表(子对象:列表));
}
}
}
我有两个问题:
从“Navigator.push()”中删除return关键字,如onPressed:(){Navigator.push(上下文,new MaterialPageRoute(builder:(上下文)=>new ReportDetail(reports[i]));},如果您有两个问题,最好是打开两个问题,否?1-在onPressed中传递数组“reports”,但我在ReportDetail类的代码中找不到它。请查看此答案@AmitJangid谢谢,这正是我要找的。从“Navigator.push()”中删除返回关键字的可能重复项,如onPressed:(){Navigator.push(上下文,new MaterialPageRoute(builder:(context)=>new ReportDetail(reports[I]);},如果您有两个问题,最好是打开两个问题,不是?1-在onPressed中传递数组“reports”,但我在ReportDetail类的代码中找不到它。请查看此答案@AmitJangid谢谢,这正是我要找的。可能是