美文网首页
flutter跳转原生页面后的穿透问题

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

作者: 叫我魏大川 | 来源:发表于2022-02-25 11:54 被阅读0次

    现象:
    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跳转原生页面后的穿透问题

          本文链接:https://www.haomeiwen.com/subject/ouexrrtx.html