重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

flutter内容切换,flutter 主题切换

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

现象:

成都创新互联公司于2013年成立,先为新县等服务建站,新县等地企业,进行企业商务咨询服务。为新县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

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

这是flutter框架一直存在的一个bug。在github上有相关的issue。

原因推测:

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

解决方案1:

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

-(void)touchesBegan:(NSSetUITouch * *)touches withEvent:(UIEvent *)event{

}

-(void)touchesMoved:(NSSetUITouch * *)touches withEvent:(UIEvent *)event{

}

-(void)touchesCancelled:(NSSetUITouch * *)touches withEvent:(UIEvent *)event{

}

-(void)touchesEnded:(NSSetUITouch * *)touches withEvent:(UIEvent *)event{

}

让事件不被flutter截获即可。

解决方案2:

直接切换window的根控制器到原生控制器即可。别忘暂时保存flutter控制器。

在返回时再切换回flutter中。

解决方案3:

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

flutter 完全使用GetX 主题切换 以及 自创建Widget的颜色随主题变化方案

这篇将会解决手动切换主题以及跟随手机切换主题来更新UI(包括自己创建的Widget)

主题切换有个问题,就是如果是我们自定义或者在 build() 自己创建的部件是不会随着系统的主题切换而发生主题色变化的(实际测试中,如果页面在顶层(没有被push)切换主题并不会触发 build() 方法,(push之后的页面切换系统主题是可以触发 build() 的,而且会频繁触发好多次...),既然无法通过重新 build 更新组件的主题色,那么我们在切换主题后,强制触发整个app的 build() 就可以了)

Flutter 四种工程类型及Flutter项目类型切换

标准的Flutter App工程,包含标准的Dart层与Native平台层

Flutter平台插件工程,包含Dart层与Native平台层的实现

Flutter纯Dart插件工程,仅包含Dart层的实现,往往定义一些公共Widget

参考资料:


名称栏目:flutter内容切换,flutter 主题切换
文章位置:http://cqcxhl.cn/article/dsgioie.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP