flutter跳转原生页面后的穿透问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter跳转原生页面后的穿透问题相关的知识,希望对你有一定的参考价值。

参考技术A 现象:
flutter页面通过present跳转原生页面后,原生页面上的点击会首先响应下面的flutter页面中的内容(比如按钮什么的)。

这是flutter框架一直存在的一个bug。在github上有相关的issue。
https://github.com/flutter/flutter/issues/35784

原因推测:
推测是flutter对控制器(或者view)加了分类,重写了控制器的点击事件,用来计算是否在对应的点击位置有flutter响应事件。没有的话再扔出去点击事件。

解决方案1:
在原生控制器中,加入点击事件的几个方法的空实现,用以覆盖flutter框架中的实现:

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event


-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event


-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event


-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event


让事件不被flutter截获即可。

解决方案2:
直接切换window的根控制器到原生控制器即可。别忘暂时保存flutter控制器。
在返回时再切换回flutter中。

解决方案3:
在flutter跳转到原生页面之前,在flutter中加上一个蒙层,用来隔绝手势往flutter下面的view传递。原生页面返回flutter时再移除这个蒙层。

以上是关于flutter跳转原生页面后的穿透问题的主要内容,如果未能解决你的问题,请参考以下文章

原生与Flutter页面跳转并传递数据

原生与Flutter页面跳转并传递数据

Flutte VS RN

Flutter Scheme 使用(微信分享链接在浏览器打开App跳转到具体的页面:比如详情,活动页)

回到前台黑屏引发对Flutter项目生命周期与安卓原生生命周期的思考

原生iOS工程引入Flutter