我正在使用类似这样的代码进行屏幕活动,
onTap: () {
Navigator.of(context).pop('lorem ipsum');
}
那么,当我按下按钮(onTap)
时,屏幕将返回上一个活动并显示“ lorem ipsum”文本,我该怎么做?
答案 0 :(得分:2)
在您的第一个屏幕中(当您要转到Screen2时)使用此功能
Navigator.push(context, MaterialPageRoute(builder: (context) => Page2()))
.then((string) {
// string here is lorem ipsum
});
在第二个屏幕上,当您回到第一个屏幕时,请使用此
Navigator.pop(context, 'lorem ipsum');
答案 1 :(得分:0)
首先,在颤抖中,不使用Activity
术语。一切都是Widget
。
按下此屏幕时,必须按下MaterialRouteWidget
,其参数应与pop的结果(在您的情况下为String)相同,如下所示-
new RaisedButton(onPressed: ()async{
String value = await Navigator.push(context, new MaterialPageRoute<String>(
builder: (BuildContext context) {
return new Center(
child: new GestureDetector(
child: new Text('OK'),
onTap: () { Navigator.pop(context, "lorem ipsum"); }
),
);
}
)
);
print(value);
},
child: new Text("Return"),)
要正确理解这一点,请完成this。
答案 2 :(得分:0)
您可以使用popAndPushNamed并将文本添加为参数
Navigator.popAndPushNamed(context, '/yourRoute', arguments: 'your text' );
答案 3 :(得分:0)
尝试这样。
1)第一页(转到第二页/活动)
Future _buttonTapped() async {
Map results = await Navigator.of(context).push(new MaterialPageRoute<dynamic>(
builder: (BuildContext context) {
return new SelectionPage();
},
));
if (results != null && results.containsKey('selection')) {
setState(() {
_selection = results['selection'];
});
}
}
2)在第二页(要从中传递值的地方)
onTap: () {
String value = "lorem ipsum";
Navigator.of(context).pop({'selection':value});
}
Here是一个很好的示例,说明了如何将值传递给上一个活动。
答案 4 :(得分:0)
有一个包,您可以传递一些参数,例如url params https://github.com/theyakka/fluro
router.define(“ / users /:id”,handler:usersHandler);
答案 5 :(得分:0)
基本上,如果您需要从页面 B 到 A 的结果......您需要在页面 A 中期待它
例如...
您有一个按钮可以转到页面 B,那么您需要下一个代码:
$('#counter-btn-1').attr('value', val);
然后在页面B中,直接发送参数
String informationFromPageB = await Navigator.push(
context,
MaterialPageRoute(
builder: (_) => PageB(),
);
这里有一个例子:https://flutter.dev/docs/cookbook/navigation/returning-data
我还做了另一个小例子:https://dartpad.dev/f13ca924e567674d872dc45662483941