
正文
flutter链接跳转,flutter 旋转
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
九、Flutter之webview
Flutter的webview常用的第三方库有 flutter_webview_plugin 、 webview_flutter ,后者的文档较少,暂先学习flutter_webview_plugin。
添加依赖
导入包
iOS端info.plist配置,其中NSAppTransportSecurity节点是为了支持http协议
一个简单的demo
要监听链接跳转的话,实现onUrlChanged即可
添加依赖
导入包
iOS端info.plist配置
一个简单的demo
但是在webview里点击链接跳转的时候,测试机有时会跳转到系统浏览器上,并且点击文本框无法弹出键盘,交互性很弱。
二者共同的缺点是与javascript难以交互,目前只能实现Flutter-JS传递信息,还没找到可以进行完美交互的第三方库。并且一些常见的协议还不支持,比如拨号和调用摄像头等,期待后续完善。
相关问答
Q1: flutter跳转原生页面后的穿透问题
现象:
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时再移除这个蒙层。
Q2: Android & Flutter 相互跳转
本文中native和flutter的跳转是借助于咸鱼的FlutterBoost和ARouter框架实现的。
Sync Now...
flutterBoost中需要给每个页面定义一个router_path,然后根据router_path找到对应页面再跳转。
在Application的onCreate中初始化
android jump to flutter
flutter jump to android
Q3: flutter_webview_plugin 与dart页面跳转使用
使用flutter_webview_plugin 加载一个H5页面,是从dart页面中跳转h5页面,h5页面中可返回dart页面,也可跳转到其他dart页面。
经测试,在Android上可正常使用,但在ios上关闭web页面时显示白屏,web页面并没有close,还没找到原因。。。
Q4: flutter 跳转页面传递参数 返回页面带参数
点击跳转 页面
跳转后页面
还有另外一种
跳转页面
跳转接收页面







