Flutter组件的动态更新方法、装置、电子设备和存储介质制造方法及图纸

技术编号:28132187 阅读:23 留言:0更新日期:2021-04-19 11:56
本发明专利技术提供了一种Flutter组件的动态更新方法、装置、电子设备和存储介质,该方法包括:获取目标页面中待更新的Flutter动态组件对应的动态资源;解码动态资源,得到具有递归层级结构的多个表达式,每个表达式包括至少一个组件配置;根据递归层级结构,对多个表达式进行递归解析,并实例化每个表达式中的组件配置,得到多个组件配置实例;将多个组件配置实例构建为Flutter组件配置树;通过Flutter系统调用Flutter组件配置树,以将更新后的Flutter动态组件显示在目标页面上。本发明专利技术减少了应用包的体积,减少对空间的占用,可以直接由Flutter的开发人员来开发,不需要额外的学习成本。不需要额外的学习成本。不需要额外的学习成本。

【技术实现步骤摘要】
Flutter组件的动态更新方法、装置、电子设备和存储介质


[0001]本专利技术涉及前端
,特别是涉及一种Flutter组件的动态更新方法、装置、电子设备和存储介质。

技术介绍

[0002]动态更新可以拓展软件的更新方式,减少触达用户的成本,不需要用户到应用市场升级App(Application,应用程序)。动态更新使得软件内容的变化更简单,可以满足部分内容快速投放市场的需求。
[0003]现有技术中,可以基于MXFlutter对Flutter组件进行动态更新,但是,MXFlutter是基于JavaScript的动态框架,需要使用JavaScript来开发,而Flutter开发是使用Dart语言,两者存在开发人群和语言的不统一。
[0004]通过JavaScript开发语言来开发的MXFlutter,某种程度上脱离了Flutter生态,同时需要仿照Flutter,搭建一套JavaScript的镜像框架,面向的人群是前端JavaScript开发者,而对于Flutter的开发人员来说需要较大的学习成本,使用过程中还需要JavaScript与Dart之间的通信,通信链路较长,而且在应用程序运行时,还需要运行额外的JavaScript,导致应用包的体积较大,占用空间较多。

技术实现思路

[0005]鉴于上述问题,提出了本专利技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种Flutter组件的动态更新方法、装置、电子设备和存储介质。
[0006]依据本专利技术的第一方面,提供了一种Flutter组件的动态更新方法,包括:
[0007]获取目标页面中待更新的Flutter动态组件对应的动态资源;
[0008]解码所述动态资源,得到具有递归层级结构的多个表达式,每个所述表达式包括至少一个组件配置;
[0009]根据所述递归层级结构,对所述多个表达式进行递归解析,并实例化每个表达式中的组件配置,得到多个组件配置实例;
[0010]根据所述递归层级结构,将所述多个组件配置实例构建为所述Flutter动态组件对应的Flutter组件配置树;
[0011]通过Flutter系统调用所述Flutter组件配置树,以将更新后的Flutter动态组件显示在所述目标页面上。
[0012]依据本专利技术的第二方面,提供了一种Flutter组件的动态更新装置,包括:
[0013]动态资源获取模块,用于获取目标页面中待更新的Flutter动态组件对应的动态资源;
[0014]动态资源解码模块,用于解码所述动态资源,得到具有递归层级结构的多个表达式,每个所述表达式包括至少一个组件配置;
[0015]递归解析模块,用于根据所述递归层级结构,对所述多个表达式进行递归解析,并
实例化每个表达式中的组件配置,得到多个组件配置实例;
[0016]Flutter组件配置树构建模块,用于根据所述递归层级结构,将所述多个组件配置实例构建为所述Flutter动态组件对应的Flutter组件配置树;
[0017]页面渲染模块,用于通过Flutter系统调用所述Flutter组件配置树,以将更新后的Flutter动态组件显示在所述目标页面上。
[0018]依据本专利技术的第三方面,还提供了一种电子设备,处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的Flutter组件的动态更新方法。
[0019]依据本专利技术的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的Flutter组件的动态更新方法。
[0020]本专利技术提供的Flutter组件的动态更新方法、装置、电子设备和存储介质,通过获取目标页面中待更新的Flutter动态组件对应的动态资源,解码所述动态资源,得到具有递归层级结构的多个表达式,根据所述递归层级结构,对所述多个表达式进行递归解析,并实例化每个表达式中的组件配置,得到多个组件配置实例,将多个组件配置实例构建为Flutter动态组件对应的Flutter组件配置树,通过Flutter系统调用Flutter组件配置树,以将更新后的Flutter动态组件显示在目标页面上,实现了对Flutter动态组件的动态更新,由于动态资源是由Flutter框架开发的,在应用程序运行时不需要运行额外的JavaScript,减少了应用包的体积,减少对空间的占用,可以直接由Flutter的开发人员来开发,不需要额外的学习成本,而且不需要JavaScript与Dart之间的通信。
[0021]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0022]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。
[0023]图1是本专利技术实施例提供的一种Flutter组件的动态更新方法的步骤流程图;
[0024]图2是本专利技术实施例提供的一种Flutter组件的动态更新方法的流程图;
[0025]图3是本专利技术实施例提供的一种Flutter组件的动态更新装置的结构框图;
[0026]图4为本专利技术实施例提供的一种电子设备的结构框图。
具体实施方式
[0027]下面将参照附图更详细地描述本专利技术的示例性实施例。虽然附图中显示了本专利技术的示例性实施例,然而应当理解,可以以各种形式实现本专利技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本专利技术,并且能够将本专利技术的范围完整的传达给本领域的技术人员。
[0028]图1是本专利技术实施例提供的一种Flutter组件的动态更新方法的步骤流程图,如图
1所示,该方法可以包括:
[0029]步骤101,获取目标页面中待更新的Flutter动态组件对应的动态资源。
[0030]其中,Flutter是一种跨平台的软件开发框架,利用Flutter开发的程序可以运行在Android,iOS以及浏览器中。所述Flutter动态组件即FairWidget,是复合组件,可以作为整个页面进行展示,也可以作为页面中的一部分进行展示。Flutter组件表达一个页面的元素,是一个抽象概念,可以是原子型的,而言可以是复合型的,原子型的组件不能再分出其他组件,而复合型的组件是多个组件拼接在一起组合成的一个新的组件。所述动态资源是二进制资源,是由Dart语言编写的代码编译后得到的,编码格式可以是json或flatbuffer,在手机或服务器上是一个文件,传输的时候以数据字节流的形式传输,动态资源的文件格式是“.fair.bin”、“.fair.jso本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Flutter组件的动态更新方法,其特征在于,包括:获取目标页面中待更新的Flutter动态组件对应的动态资源;解码所述动态资源,得到具有递归层级结构的多个表达式,每个所述表达式包括至少一个组件配置;根据所述递归层级结构,对所述多个表达式进行递归解析,并实例化每个表达式中的组件配置,得到多个组件配置实例;根据所述递归层级结构,将所述多个组件配置实例构建为所述Flutter动态组件对应的Flutter组件配置树;通过Flutter系统调用所述Flutter组件配置树,以将更新后的Flutter动态组件显示在所述目标页面上。2.根据权利要求1所述的方法,其特征在于,所述获取目标页面中待更新的Flutter动态组件对应的动态资源,包括:在所述目标页面加载所述Flutter动态组件时,从缓存或服务器获取所述Flutter动态组件对应的动态资源。3.根据权利要求2所述的方法,其特征在于,还包括:在所述目标页面所属的应用程序启动后,加载所述目标应用程序在本地的动态资源表,所述动态资源表包括Flutter动态组件的组件标识和资源配置信息;根据所述动态资源表,从服务器获取与所述组件标识对应的更新配置信息;将所述动态资源表中与所述组件标识对应的资源配置信息更新为所述更新配置信息,得到更新后的动态资源表;若所述动态资源表中的组件标识对应的动态资源为远程资源,则通过后台线程从所述动态资源表中资源配置信息中的资源地址预加载所述动态资源,并进行持久化缓存。4.根据权利要求2所述的方法,其特征在于,所述在所述目标页面加载所述Flutter动态组件时,从缓存或服务器获取所述Flutter动态组件对应的动态资源,包括:在所述目标页面加载所述Flutter动态组件时,从缓存中查询所述Flutter动态组件对应的动态资源;若从所述缓存中查询到所述Flutter动态组件对应的动态资源,则从缓存中获取所述Flutter动态组件对应的动态资源;若从所述缓存中未查询到所述Flutter动态组件对应的动态资源,则从服务器获取所述Flutter动态组件对应的动态资源。5.根据权利要求4所述的方法,其特征在于,在所述从服务器获取所述Flutter动态组件对应的动态资源之后,还包括:将所述Flutter动态组件对应的动态资源进行持久化缓存。6.根据权利要求4所述的方法,其特征在于,还包括:从服务器获取所述Flutter动态组件对...

【专利技术属性】
技术研发人员:吴朝彬
申请(专利权)人:北京城市网邻信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1