赞
踩
今年实在是大卷元年呀,莫名其妙的flutter就开始在各大公司火了起来,然后就是全员学习flutter,公司可以不用,但是你必须得会。隔壁IOS同事瑟瑟发抖,咋啦?意思就是我走咯?
不管怎么说,该学咱们就得学,不然工作没着落,不废话了,今天我们来谈谈flutter怎么去实现类似Android的startActivityForResult和onActivityResult的功能。我们在做Android开发的时候,经常会遇到一个需求:
就是从页面A跳转到页面B去操作,然后在页面B关闭后,返回页面A,同时带回一串数据,如果我们需要获取这串数据就得在A页面跳转B页面的时候使用startActivityForResult方法去跳转,然后在页面B关闭的时候调用setResult方法去把结果带回页面A,页面A需要接收到B页面带回来的数据需要在onAcitivityResult方法里面进行获取。
以上是Android的实现过程,那么在Flutter上又是如何实现上面的需求呢?这个时候不得不提Flutter退出界面的方法了,我们都知道flutter退出界面的方法是下面这一句:
Navigator.of(context).pop();
不知道的小伙伴也可以记一下,下次可以用,我们点击进去pop方法里面看源码,其实这个方法是可以有参数的——result。没错就是你想的那样,这里其实就相当于Android的这一句:
- setResult(data,statusCode);
- finish();
那么这样就解决了如何从页面B带参数返回页面A了,那么页面A怎么接收返回的参数呢?代码如下:
- Navigator.of(context).push(MaterialPageRoute(builder: (context)=>
- GalleryPage())).then((value){
- ///value是从页面B返回的值, GalleryPage这个是页面B的实例
-
-
- });
接下来还有一种情况,那如果现在的要求是,我需要从页面A带参数到页面B,然后再从页面B把参数带回来,怎么办?不要慌,我们可以这样写:
- Navigator.of(context).push(MaterialPageRoute(builder: (context)=> GalleryPage(),
- settings: RouteSettings(arguments: (“数据”)))).then((value){
- ///settings: RouteSettings(arguments: (“数据”))用于传数据,value是页面B返回的数据
-
-
- });
这样就解决我们上面的问题了,希望这篇文章能帮到大家,如果有讲的不对的地方也希望大家不吝指教,我会及时修改,谢谢大家观看!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。