代码之家  ›  专栏  ›  技术社区  ›  TheUnreal

窗口小部件之间的flutter-pass数据

  •  0
  • TheUnreal  · 技术社区  · 5 年前

    我有两个小部件:

    1. 报告表
    2. 报告细节

    我正试图将报表数据从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)));
        }
      }
    }
    

    我有两个问题:

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

      位置参数太多:应为0,但找到1。

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

    0 回复  |  直到 5 年前