Flutter 颤振:在屏幕之间传递多个数据

Flutter 颤振:在屏幕之间传递多个数据,flutter,Flutter,我是个新手。我正在尝试将多个数据发送到另一个屏幕: // screen1.dart .. Expanded( child: RaisedButton( onPressed: () { Navigator.push(context, MaterialPageRoute( builder: (context) => new Screen2(name: thing.name, email: thing.email, address: t

我是个新手。我正在尝试将多个数据发送到另一个屏幕:

// screen1.dart
..
Expanded(
  child: RaisedButton(
    onPressed: () {
      Navigator.push(context,
        MaterialPageRoute(
          builder: (context) => new Screen2(name: thing.name, email: thing.email, address: thing.address, etc..),
        ),
      );
    },
  ),
),
..


// screen2.dart

class Screen2 extends StatefulWidget{
  Screen2({this.name}, {this.email}, {this.address}, etc..);
  final String name;
  final String email;
  final String address;
  // etc
  @override
  State<StatefulWidget> createState() { return new Screen2State();}
}

class Screen2State extends State<Screen2> {
  Widget build(BuildContext context) {
    return new WillPopScope(
      ..
      child: Scaffold(
        ..
        new Row(
          children: <Widget>[
            new Text(widget.name),
            new Text(widget.email),
            new Text(widget.address),
            etc..
          ],
        ),
      )
    )
}
//screen1.dart
..
扩大(
孩子:升起按钮(
已按下:(){
Navigator.push(上下文,
材料路线(
生成器:(上下文)=>新屏幕2(名称:thing.name、电子邮件:thing.email、地址:thing.address等),
),
);
},
),
),
..
//屏幕2.省道
类Screen2扩展了StatefulWidget{
屏幕2({this.name}、{this.email}、{this.address}等等);
最后的字符串名;
最终字符串电子邮件;
最终字符串地址;
//等
@凌驾
状态createState(){返回新的Screen2State();}
}
类Screen2State扩展状态{
小部件构建(构建上下文){
返回新的Willposcope(
..
孩子:脚手架(
..
新行(
儿童:[
新文本(widget.name),
新文本(widget.email),
新文本(widget.address),
等
],
),
)
)
}
但是我得到了一个错误:
必须向文本小部件提供一个非空字符串。

数据是从TextEditingController传输的。当只有1个数据传输时,它工作,但当有2个或更多数据传输时,它失败


在屏幕之间发送多个数据的正确方法是什么?

考虑通过路由参数传递参数。请参阅此处的官方文档

一切看起来都很好,但您需要在Screen 2类构造函数中对此进行更改

Screen2({this.name, this.email, this.address, etc..});
修改代码

// screen1.dart
..
Expanded(
  child: RaisedButton(
    onPressed: () {
      Navigator.push(context,
        MaterialPageRoute(
          builder: (context) => new Screen2(name: thing.name, email: thing.email, address: thing.address, etc..),
        ),
      );
    },
  ),
),
..


// screen2.dart

class Screen2 extends StatefulWidget{
 Screen2({this.name, this.email, this.address, etc..});
  final String name;
  final String email;
  final String address;
  // etc
  @override
  State<StatefulWidget> createState() { return new Screen2State();}
}

class Screen2State extends State<Screen2> {
  Widget build(BuildContext context) {
    return new WillPopScope(
      ..
      child: Scaffold(
        ..
        new Row(
          children: <Widget>[
            new Text(widget.name),
            new Text(widget.email),
            new Text(widget.address),
            etc..
          ],
        ),
      )
    )
}
final String name="";
final String email="";
final String address="";