Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在flatter中发送和接收视图之间的参数_Android_Ios_Flutter_Routes - Fatal编程技术网

Android 如何在flatter中发送和接收视图之间的参数

Android 如何在flatter中发送和接收视图之间的参数,android,ios,flutter,routes,Android,Ios,Flutter,Routes,我试图在flatter项目中将数据从一个页面发送到另一个页面,尝试了在另一个问题中找到的所有方法,但都失败了,下面是我的代码: 第一页: Navigator.pushNamed(上下文,“/line_details”,参数:{'line':line,}); 第二页: class\u LineDetailsState扩展状态{ 地图数据={}; @凌驾 小部件构建(构建上下文){ data=ModalRoute.of(context).settings.arguments; 返回脚手架( app

我试图在
flatter
项目中将数据从一个页面发送到另一个页面,尝试了在另一个问题中找到的所有方法,但都失败了,下面是我的代码:

第一页:

Navigator.pushNamed(上下文,“/line_details”,参数:{'line':line,});
第二页:

class\u LineDetailsState扩展状态{
地图数据={};
@凌驾
小部件构建(构建上下文){
data=ModalRoute.of(context).settings.arguments;
返回脚手架(
appBar:appBar(
背景颜色:颜色。深紫色,
标题:文本(“$data”),
),
);
}
}
注意
是创建的自定义对象


错误:始终返回空值,即使尝试以
{“test”:“test string”}的形式发送单个字符串
它也返回空值

您的示例运行良好

材料中的路线PP

routes: { "/line_details": (context) => LineDetails(), },
按下按钮:

onPressed: () => Navigator.pushNamed(context, '/line_details', arguments: {'line':'test',}),
类行详细信息

class LineDetails extends StatefulWidget {

  @override
  _LineDetailsState createState() => _LineDetailsState();
}

class _LineDetailsState extends State<LineDetails> {

  Map data = {};

  @override
  Widget build(BuildContext context) {
    data  = ModalRoute.of(context).settings.arguments;

    print(data);
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.deepPurple,
        title: Text("$data"),
      ),
    );
  }

}
试试这个:

Navigator.push(
    context,
    LineDetailsState(
        builder: (context) => LineDetailsState(
              line: line
            )))

类LineDetailsState扩展StatefulWidget{
LineDetailsState(此.line);
线条;
@凌驾
_LineDetailsState createState()=>\u LineDetailsState();
}
类_LineDetailsState扩展状态{
地图数据={};
@凌驾
小部件构建(构建上下文){
data=ModalRoute.of(context).settings.arguments;
返回脚手架(
appBar:appBar(
背景颜色:颜色。深紫色,
标题:文本(“$data”),
),
);
}
}

将其替换为自定义对象的名称,而不是“Line”

您的示例看起来很合适。您可以尝试的另一件事是键入参数 像下面的帮助飞镖脱毛。请注意,这与您得到null无关

    class LineDetails extends StatefulWidget {

  @override
  _LineDetailsState createState() => _LineDetailsState();
}

class _LineDetailsState extends State<LineDetails> {

  Map data = {};

  @override
  Widget build(BuildContext context) {
    data  = ModalRoute.of(context).settings.arguments as Map<String,object>;

    print(data);
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.deepPurple,
        title: Text("$data"),
      ),
    );
  }

}
类LineDetails扩展StatefulWidget{
@凌驾
_LineDetailsState createState()=>\u LineDetailsState();
}
类_LineDetailsState扩展状态{
地图数据={};
@凌驾
小部件构建(构建上下文){
data=ModalRoute.of(context).settings.arguments作为映射;
打印(数据);
返回脚手架(
appBar:appBar(
背景颜色:颜色。深紫色,
标题:文本(“$data”),
),
);
}
}

我正在使用
手势检测器
并使用
onTap(){}
而不是按钮,这可能会影响任何事情?
class LineDetailsState extends StatefulWidget {
  LineDetailsState(this.line);

  Line line;

  @override
  _LineDetailsState createState() => _LineDetailsState();
}

class _LineDetailsState extends State<LineDetails> {

  Map data = {};

  @override
  Widget build(BuildContext context) {
    data  = ModalRoute.of(context).settings.arguments;
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.deepPurple,
        title: Text("$data"),
      ),
    );
  }
}
    class LineDetails extends StatefulWidget {

  @override
  _LineDetailsState createState() => _LineDetailsState();
}

class _LineDetailsState extends State<LineDetails> {

  Map data = {};

  @override
  Widget build(BuildContext context) {
    data  = ModalRoute.of(context).settings.arguments as Map<String,object>;

    print(data);
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.deepPurple,
        title: Text("$data"),
      ),
    );
  }

}