9-10【H5混合实战】基于自定义WebView实现H5混合开发-3

封装好了WebView,下面来使用它。Nav里面每个图标点击会跳转到H5的页面。
跳转需要用到Navigator来push一个页面。然后里面使用MaterialPageRoute,

导入WebVIew这个widget

运行测试

点击


点击左侧的按钮可以返回。

点击返回,并没有返回到我们的首页,而是打开了另外一个H5页面

这个H5页面是携程的首页

怎么规避这个问题呢?接下俩就需要扩展我们的WebView来和H5之间进行一个混合。
在我们webView页面加载指定的url的时候。native做一些操作来规避让它不加载这个url。
当url发生变化的时候,在OnStateChanged会收到监听。

判断如果是跳转写成的首页或者是其他的H5页面,就不让他跳转,而是返回到我们的首页。

在顶部配置一些白名单。包含了携程可能出现的一些域名。

提供一个方法来判断

在dart里面判断一个object存不存在的方法。问号+点:?.
当我们的url存在的时候,才调用endsWith否则走的是false

如果是false或者不存在的情况下,直接设置为false


flutter里面返回到上一页 通过pop方法。

加一个是否返回的状态。默认是没有返回的

返回到首页后,就设置为true

让Navigator不重复返回。

运行测试

点击返回并没有返回到我们的首页。

代码报错


成功返回

总结

如果禁制返回,就是不允许webview打开其他页面,只允许打开它自身。

结束

原文地址:https://www.cnblogs.com/wangjunwei/p/12207995.html

时间: 2024-10-04 17:37:18

9-10【H5混合实战】基于自定义WebView实现H5混合开发-3的相关文章

9-9【H5混合实战】基于定义WebView实现H5混合开发-2

webview具体展示的内容,想让它撑满整个界面. 用Expanded这个widget 初始化加载的时候提示信息 目前WebView还有一个bug.即使我们默认让它隐藏,也设置了初始化加载的信息.但是 你会发现它是无效的.但是在不久的将来,它修复了这个bug ,就可以正常使用了. 状态栏的颜色的判断, 如果和String类型的颜色 转换成Color这个widget需要的参数 Color是接收一个int类型的颜色 首先需要知道颜色是6位还8位的.如果是6位的话就需要前面补两位.补0x表示16位,

第13章 TCP编程(3)_基于自定义协议的多进程模型

5. 自定义协议编程 (1)自定义协议:MSG //自定义的协议(TLV:Type length Value) typedef struct{ //协议头部 char head[10];//TLV中的T unsigned int checkNum; //校验码 unsigned int cbSizeContent; //协议体的长度 //协议体部 char buff[512]; //数据 }MSG; (2)自定义读写函数 ①extern int write_msg(int sockfd, cha

第13章 TCP编程(4)_基于自定义协议的多线程模型

7. 基于自定义协议的多线程模型 (1)服务端编程 ①主线程负责调用accept与客户端连接 ②当接受客户端连接后,创建子线程来服务客户端,以处理多客户端的并发访问. ③服务端接到的客户端信息后,回显给客户端 (2)客户端编程 ①从键盘输入信息,并发送给服务端 ②接收来自服务端的信息 //msg.h与前一节相同 #ifndef __MSG_H__ #define __MSG_H__ #include <sys/types.h> //求结构体中成员变量的偏移地址 #define OFFSET(T

android4.2串口jni收发数据(基于自定义协议)

代码已经验证过,没问题 ! 代码层次结构: |-----serial_communication_class--- |                     |-------src--------- |                                  |------com------ |                                             |----object----- |                                

Swift项目实战-基于分层架构的多版本iPhone计算器-免费直播公开课邀您参与

Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播课 好消息:买本课程送相关讲师图书+50金币课程优惠券!还有更好消息,为了回馈新老学员,本次采取直播免费,录播收费的形式哦~! 购买本课程赠送关东升老师价值69元国内第一本<Swift开发指南>,并且赠送50元优惠券一张.69+50>99.(购买课程后请联系客服QQ:1575716557) 本课程采用QQ群直播方式进行直播,直播免费看了,完整的基于Swift项目实战,手把手教你做一个Swift版iPhone计算器. 直播

Webview 与h5的交互

步骤:H5代码 <html> <head> <meta charset="UTF-8"> <title>交互Demo</title> <meta content="initial-scale=1.0,user-scalable=no,maximum-scale=1,width=device-width" name="viewport"> </head> <b

android 自定义webview 如何使用gps 如何用模拟的gps

1 如何fake gps ? gps的fake 有个很奇怪的现象  你需要把fake gps的代码放到一个service当中 不知道是否是系统对发出fake信息的源进行了限定 目前实验结果是需要放在service 代码大致如下 package com.yiqiding.ktvbox.view.service; import java.lang.reflect.Method; import android.app.Service; import android.content.Intent; im

Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版iPhone计算器.(直播过程也有惊喜!)直播Q Q群:362298485(直播时点击群视频即可进入直播课堂)直播时间:8月26日(周二),9月2日(周四),每天20:00-22:00欢迎咨询客服Q Q:1575716557直播后希望继续深入学习了解本课程可在51CTO学院购买本课程,定价99元.购买课程更有惊喜:买课程送书,送优惠券了! 购买本课程赠送关东升老师价值69元国

如何利用阿里视频云开源组件,快速自定义你的H5播放器?

摘要: Aliplayer希望提供一种方便.简单.灵活的机制,让客户能够扩展播放器的功能,并且Aliplayer提供一些组件的基本实现,用户可以基于这些开源的组件实现个性化功能,比如自定义UI和自己App server的交互等等,而不用从头开始开发一些功能,节省时间和精力. 阿里云播放器SDK(ApsaraVideo for Player SDK)是阿里视频云端到云到端服务的重要一环,除了支持点播和直播的基础播放功能外,还深度融合视频云业务,支持视频的加密播放.安全下载.首屏秒开.低延时等业务场