返回上一个活动时如何返回数据?

时间:2019-04-09 07:22:18

标签: dart flutter

我正在使用类似这样的代码进行屏幕活动,

onTap: () { 
   Navigator.of(context).pop('lorem ipsum');
}

那么,当我按下按钮(onTap)时,屏幕将返回上一个活动并显示“ lorem ipsum”文本,我该怎么做?

6 个答案:

答案 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