:之所以让AppDelegate继承于UINavigationControllerDelegate,并实现navigationController:willShow方法, ,所以实现代理方法对导航栏的显示做了判断。
我们一直强调成都网站设计、网站制作、外贸营销网站建设对于企业的重要性,如果您也觉得重要,那么就需要我们慎重对待,选择一个安全靠谱的网站建设公司,企业网站我们建议是要么不做,要么就做好,让网站能真正成为企业发展过程中的有力推手。专业网站建设公司不一定是大公司,创新互联作为专业的网络公司选择我们就是放心。
JumpTestViewController.swift 为:
JumpChannel.kt :
SecondActivity.kt :
在AndroidManifest.xml的application中注册SecondActivity:
在res文件夹下创建一个layout文件夹,并添加activity_second.xml文件:
Demo: flutter_jumpto_native
本文中native和flutter的跳转是借助于咸鱼的FlutterBoost和ARouter框架实现的。
Sync Now...
flutterBoost中需要给每个页面定义一个router_path,然后根据router_path找到对应页面再跳转。
在Application的onCreate中初始化
android jump to flutter
flutter jump to android
现象:
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时再移除这个蒙层。