flutter_boost icon indicating copy to clipboard operation
flutter_boost copied to clipboard

3.0版本 WillPopScope监听页面返回时如何返回result

Open cnting opened this issue 3 years ago • 7 comments

使用WillPopScope监听点击返回键,该怎么将result返回,我用下面这个方式会陷入死循环

  return WillPopScope(
      child: child,
      onWillPop: () {
        print('===>onWillPop');
        BoostNavigator.of().pop({"sync": true});
        return Future.value(true);
      });

能否将源码中的_pendingResult[uniqueId].complete(result);暴露出来?有点类似Android中的 Activity#setResult()

flutter_boost分支:v3.0-hotfixes

cnting avatar Apr 16 '21 03:04 cnting

在willPop方法中不需要再调用BoostNavigator.of().pop({"sync": true});因为onWillPop返回的是一个bool,外部在等待这个bool的结果来判断是否进行pop。我想你的想法是不是在于,在pop之后,因为动作被willPop拦截了,页面没有pop,但是value却已经回调了 @cnting

luckysmg avatar Apr 16 '21 04:04 luckysmg

不是,我的需求是希望在监听到用户点击返回键(包括物理返回键)时能将result返回。现在只有BoostNavigator.of().pop({"sync": true});这个方法能返回result,希望能暴露一个类似Android中Activity#setResult()的方法

cnting avatar Apr 16 '21 05:04 cnting

问题我们已经复现,正在寻找合适的解决方案

ColdPaleLight avatar Apr 16 '21 12:04 ColdPaleLight

这里的设计我觉得很好笑,调用pop方法会内部调Navigator.maybepop方法;我觉得应该这样做:NativeRouterAPI的popRoute调Navigator.maybepop, 而BoostNavigator.pop应该直接销毁当前路由。

huangyumeng123 avatar May 14 '21 09:05 huangyumeng123

请问这个问题有合适的解决方案了吗

cnting avatar Aug 27 '21 03:08 cnting

请问这个问题有合适的解决方案了吗 +1 @ColdPaleLight

okayFan avatar Sep 15 '21 10:09 okayFan

请问这个问题有合适的解决方案了吗 +1

TeeMoYan avatar Mar 25 '22 12:03 TeeMoYan