Flutter-在小部件之间传递数据

时间:2019-03-08 11:29:17

标签: dart flutter

我有2个小部件:

  1. ReportList
  2. ReportDetail

我正试图将报告数据从RepostList小部件传递到ReportDetail小部件,并再次调用API以在ReportDetail小部件中获取有关报告的更多信息。

在我的ReportList中,导航的工作方式如下:

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)));
    }
  }
}

我有2个问题:

  1. 我的报告列表中出现以下错误:

    位置参数过多:预期为0,但找到1。

  2. 在ReportDetail小部件中,如何确保在创建表之前从API中获得数据(请求已完成并且this.report现在包含数据)?

0 个答案:

没有答案