flutter右滑返回直接返回到native问题
iOS跳flutterViewController后,flutter1又跳了flutter2,flutter2侧滑返回总是返回到原生,期望侧滑返回到flutter1页面。
解决方案:
在iOS原生导航类 BaseNavigationController 中,修改下面代理方法,如果是flutter类,就禁用了iOS原生手势。这样flutter的侧滑手势优先级就上来了。
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ if ([viewController isKindOfClass:[FlutterViewController class]]) { self.interactivePopGestureRecognizer.enabled = NO; } else { self.interactivePopGestureRecognizer.enabled = YES; } }
上面问题解决后,就会导致新的问题出现,flutter1级页面无法 手势滑动pop回原生。
在flutter1级页面加了自定义手势,给原生发channel消息,原生pop回上一级页面,这种解决方案,滑动手势不优雅,滑动体验卡顿。有没有更好的解决方案呢?
最佳方案
原生跳flutterVC时,开启侧滑手势。然后,flutter main类里,监听getx导航栈里的个数,push和pop时,将导航栈个数给原生发channel,原生收到,如果导航栈个数为1就开启侧滑手势,否则,关闭原生滑动手势,走flutter的滑动手势。
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ if ([viewController isKindOfClass:[FlutterViewController class]]) { self.interactivePopGestureRecognizer.enabled = YES; } else { self.interactivePopGestureRecognizer.enabled = YES; } }
在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……

浙公网安备 33010602011771号