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