当前位置:   article > 正文

用flutter实现类似startActivityForResult和onActivityResult功能

用flutter实现类似startActivityForResult和onActivityResult功能

        今年实在是大卷元年呀,莫名其妙的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的这一句:

  1. setResult(data,statusCode);
  2. finish();

        那么这样就解决了如何从页面B带参数返回页面A了,那么页面A怎么接收返回的参数呢?代码如下:

  1. Navigator.of(context).push(MaterialPageRoute(builder: (context)=>
  2. GalleryPage())).then((value){
  3. ///value是从页面B返回的值, GalleryPage这个是页面B的实例
  4. });

        接下来还有一种情况,那如果现在的要求是,我需要从页面A带参数到页面B,然后再从页面B把参数带回来,怎么办?不要慌,我们可以这样写:

  1. Navigator.of(context).push(MaterialPageRoute(builder: (context)=> GalleryPage(),
  2. settings: RouteSettings(arguments: (“数据”)))).then((value){
  3. ///settings: RouteSettings(arguments: (“数据”))用于传数据,value是页面B返回的数据
  4. });

        这样就解决我们上面的问题了,希望这篇文章能帮到大家,如果有讲的不对的地方也希望大家不吝指教,我会及时修改,谢谢大家观看!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/515674
推荐阅读
相关标签
  

闽ICP备14008679号