System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及应用管理,特别地涉及一种基于flutter的移动端混合页面的管理方法。
技术介绍
1、科技的进步带来了许多便利,移动设备的普及也对市场有了新的要求,用户对于夸平台的体验一致性愈发强烈,应用研发的过程中也将此作为重要的目标,flutter作为一个开源的ui框架,能够较好的提供多平台一致性体验,但是一些特定场景依旧无法满足。
2、后续对于flutter混合开发,flutter官方提出了“add2app”方案,允许开发者将flutter模块集成到现有原生应用中,但是并没有解决页面管理及路由问题,对某些业务场景并不能提供很好的支持。
技术实现思路
1、针对上述问题,本申请提供一种基于flutter的移动端混合页面的管理方法,通过对混合页面堆栈管理,可以让用户无感知的在不同技术栈的页面自由跳转、参数传递与结果回传,从而对页面场景的切换进行优化,使用户能够有更好的应用使用体验。
2、本申请的技术方案为:一种基于flutter的移动端混合页面的管理方法,包括:
3、 s1、接收应用启动信号后,系统在执行配置的entrypoint入口预热一个flutter引擎,在flutter内创建一个flutter容器实例和一个widget结构的路由栈,路由栈中包含多个navigator路由,且路由栈能够维护当前引擎内所有的原生容器所对应的flutter堆栈,保持原生容器与navigator路由一一对应;
4、s2、接收应用页面交互的信号后,在单引擎模式
5、其中对flutter引擎与flutter容器flutter容器的依附和分离操作为:
6、依附操作,创建flutter视图并添加到原生界面中;将创建的flutter视图与flutter引擎一一关联,随后完成flutter引擎就会附加到flutter视图上,进而完成原生应用中嵌入flutter视图;
7、分离操作,在原生应用退出或者不需要嵌入的flutter视图的时候,断开flutter视图与flutter引擎的关联,并且销毁flutter容器。
8、作为优选地,步骤s1中在flutter内创建一个flutter容器实例和一个widget结构的路由栈”之后,还包括对flutter界面的判断,具体步骤为:
9、flutter框架在创建应用程序时会根据应用的配置设置默认的首页或根路由,应用默认以flutter页面作为应用首个页面,自动判断路由导航到根路由配置的flutter页面,并通过navigator路由负责管理页面的堆栈,无需开发者介入;
10、如果在flutter应用中flutter页面不是根路由页面,则需要开发者手动导航至非根路由页面或者修改根页面,从而满足不同的导航需求。
11、作为优选地,步骤s2中接收应用页面交互的信号后,还包括有多引擎模式下对路由关系的维护,具体步骤为:
12、路由跳转时提供可选flutter引擎,当未指定flutter引擎时,将优先从当前引擎路由查找,失败则从全局查找,其中flutter引擎由flutter引擎组创建,不同的flutter引擎的编号分别记为αn,n=1,2,3······n,n为创建的flutter引擎的总数量,且每个flutter引擎αn对应唯一一个引擎βn,引擎βn为flutter引擎αn对应的路径,每个flutter引擎αn对应数个flutter容器,γm为flutter容器对应的路径,m=1,2,3······m,m为flutter容器的总数量,构建从flutter引擎到每一个flutter容器的路径idm=αn+βn+γm,通过idm可全局定位到系统任意的路由页面。
13、作为优选地,在多引擎模式下对路由关系进行维护时,还包括多引擎模式下的共享通信,具体步骤为:
14、建立一个共享内存区域,当系统中的任何一个部分进行路由栈数据操作时,这些操作会同步映射到共享内存区域,通过ffi通道在flutter和原生进程之间共享,flutter和原生进程通过共享内存区域的地址来访问和操作相同的数据;
15、所述共享内存区域存储有路由栈数据,还保存应用的全局数据,全局数据包括应用的状态和配置信息,且共享内存区域设置有持久化接口,允许将这些数据永久保存在存储介质中;
16、并且在debug模式下,由于共享内存区域存储了路由栈数据,因此可以通过共享内存区域的数据来恢复路由栈。
17、作为优选地,s1中通过路由栈维护当前引擎内所有的原生容器所对应的flutter堆栈的具体步骤为:
18、在每个flutter引擎αn都设置一个路由栈,路由栈δn为路由栈对应的编号,用于管理页面,且其中包含多个navigator路由实例,构成路由栈-navigator路由列表,每个navigator路由都代表一个页面堆栈;接收需要显示的navigator路由,遍历路由栈-navigator路由列表,查找对应的路由栈δn,通过改变路由栈δn对应的index来控制当前显示的navigator路由,并且将已经显示的navigator路由进行隐藏,从而通过改变路由栈δn的index来对应原生容器的显示和隐藏;
19、将路由栈δn中多个navigator路由实例记为子类,建立子类列表,接收原生容器展示信号,在需要展示的地方,建立一个新的navigator路由,更新路由栈δn对应的子类属性,添加原生容器对应的navigator路由到子类列表中,完成对原生容器的展示,当接收销毁信号的时候,同样更新路由栈δn对应的子类属性,从子类列表中移除对应的navigator路由以销毁原生容器;
20、定义globalkey作为navigator路由的唯一标识key,在创建navigator路由时将定义的globalkey分配给navigator路由的key属性,根据globalkey来获取对应的navigator路由state,进而执行页面跳转和返回的操作,确保在整个应用程序中,使用globalkey时保持其唯一性,以便准确地标识和操作对应的navigator路由,确保flutter中的navigator路由与原生容器之间一一对应。
21、作为优选地,步骤s2进行跨原生页面的flutter页面跳转切换时,还包括flutter页面路由实现的具体步骤为:
22、创建一个名为mycontainerwidget的自定义小部件,其中包含了一个navigator路由组件,这个自定义小部件通过flutter提供的navigator路由大大简化了页面路由的实现,自定义小部件使用ongenerateroute方法提供路由工厂配置自动实现路由跳转;containerwidget通过监听navigator路由observer来记本文档来自技高网...
【技术保护点】
1.一种基于Flutter的移动端混合页面的管理方法,其特征在于,包括:
2.如权利要求1所述的一种基于Flutter的移动端混合页面的管理方法,其特征在于,步骤S1中在Flutter内创建一个Flutter容器实例和一个Widget结构的路由栈”之后,还包括对Flutter界面的判断,具体步骤为:
3.如权利要求1所述的一种基于Flutter的移动端混合页面的管理方法,其特征在于,步骤S2中接收应用页面交互的信号后,还包括有多引擎模式下对路由关系的维护,具体步骤为:
4.如权利要求3所述的一种基于Flutter的移动端混合页面的管理方法,其特征在于,在多引擎模式下对路由关系进行维护时,还包括多引擎模式下的共享通信,具体步骤为:
5.如权利要求1所述的一种基于Flutter的移动端混合页面的管理方法,其特征在于,S1中通过路由栈维护当前引擎内所有的原生容器所对应的Flutter堆栈的具体步骤为:
6.如权利要求1所述的一种基于Flutter的移动端混合页面的管理方法,其特征在于,步骤S2进行跨原生页面的Flutter页面
...【技术特征摘要】
1.一种基于flutter的移动端混合页面的管理方法,其特征在于,包括:
2.如权利要求1所述的一种基于flutter的移动端混合页面的管理方法,其特征在于,步骤s1中在flutter内创建一个flutter容器实例和一个widget结构的路由栈”之后,还包括对flutter界面的判断,具体步骤为:
3.如权利要求1所述的一种基于flutter的移动端混合页面的管理方法,其特征在于,步骤s2中接收应用页面交互的信号后,还包括有多引擎模式下对路由关系的维护,具体步骤为:
4.如权利要求3...
【专利技术属性】
技术研发人员:何卫江,赵先华,
申请(专利权)人:湖南兴盛优选网络科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。