CN114647519A - 原生平台和Flutter平台间的数据传输方法、装置及存储介质 - Google Patents
原生平台和Flutter平台间的数据传输方法、装置及存储介质 Download PDFInfo
- Publication number
- CN114647519A CN114647519A CN202210300626.9A CN202210300626A CN114647519A CN 114647519 A CN114647519 A CN 114647519A CN 202210300626 A CN202210300626 A CN 202210300626A CN 114647519 A CN114647519 A CN 114647519A
- Authority
- CN
- China
- Prior art keywords
- flutter
- container
- native platform
- platform
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施方式公开了一种原生平台和Flutter平台间的数据传输方法、装置及存储介质。方法包括:在包含Flutter容器的Flutter网页端,注册用于为Flutter容器获取数据的方法;在Flutter网页端,将所述方法的方法名以及所述Flutter容器的标识发送到原生平台;在原生平台,基于所述Flutter容器的标识,建立适配于被所述方法名调用的、所述原生平台与所述Flutter容器之间的消息通道;基于所述消息通道,在所述原生平台与所述Flutter容器之间传输数据。本发明实施方式无需开发人员记忆消息通道的标识,即可实现原生平台和Flutter平台之间的数据传输。发送到目标Flutter容器的数据类型具有多种实施方式,具有广泛的适用性。
Description
技术领域
本发明实施方式涉及Flutter技术领域,更具体的说,涉及原生平台和Flutter平台间的数据传输方法、装置及存储介质。
背景技术
Flutter是一种移动用户界面(User Interface,UI)框架,包含用于构建跨平台移动端app的软件开发工具包(Software Development Kit,SDK),可以快速地在原生平台(比如Android和iOS系统)上构建高质量的用户界面。目前大部分开发者都是在当前已有的原生平台中扩展Flutter功能来进行用户界面和业务组件化设计,而不是将已有的移动端app完全Flutter化。即目前基于Flutter的业务组件化方案大部分都是原生工程和Flutter工程的混合开发模式。混合开发模式的实现方式通常包括:在已有的原生平台开发中引入Flutter功能,以原生平台的系统工程为主工程,将Flutter功能模块以子模块(module)的方式引入,使已有的原生工程具备Flutter功能,从而可基于Flutter对原生工程的各种业务进行组件开发和设计。
目前,当原生平台需要向Flutter容器发送数据时,原生平台建立与Flutter平台的消息通道。开发人员人工记忆该消息通道的标识,然后开发人员在Flutter平台中利用该标识将该消息通道与Flutter容器绑定。接着,原生平台可以通过该消息通道将数据发送到Flutter容器。然而,在这种实现方式中,需要开发人员人工记忆消息通道的标识,导致开发人员使用不便。
发明内容
本发明实施方式提出一种原生平台和Flutter平台间的数据传输方法、装置及存储介质。
本发明实施方式的技术方案如下:
一种原生平台和Flutter平台之间的数据传输方法,包括:
在包含Flutter容器的Flutter网页端,注册用于为所述Flutter容器获取数据的方法;
在所述Flutter网页端,将所述方法的方法名以及所述Flutter容器的标识发送到原生平台;
在所述原生平台,基于所述Flutter容器的标识和所述方法名,建立适配于被所述方法名调用的、所述原生平台与所述Flutter容器之间的消息通道;
基于所述消息通道,在所述原生平台与所述Flutter容器之间传输数据。
在一种示范性实施方式中,还包括:
在所述原生平台,设置所述Flutter容器的标识以及所述Flutter容器的属性参数;在所述原生平台,基于所述Flutter容器的标识以及所述Flutter容器的属性参数创建所述Flutter容器;在所述原生平台,基于与所述Flutter网页端之间的事件通道向所述Flutter网页端发送弹出指令,所述弹出指令用于指示弹出所述Flutter容器;在所述Flutter网页端,基于所述弹出指令弹出所述Flutter容器。
在一种示范性实施方式中,所述将所述方法名以及所述Flutter容器的标识发送到原生平台包括:
基于Flutter Plugin方式,将所述方法名以及所述Flutter容器的标识发送到原生平台。
在一种示范性实施方式中,所述基于所述消息通道,在所述原生平台与所述Flutter容器之间传输数据包括:
当在所述原生平台的业务代码中检索到包含所述方法名的调用命令时,从所述调用命令中获取作为数据接收对象的、目标Flutter容器的标识;
基于所述目标Flutter容器的标识,确定所述原生平台与所述目标Flutter容器之间的消息通道;
基于所述原生平台与所述目标Flutter容器之间的消息通道,从所述原生平台向所述目标Flutter容器发送下列数据中的至少一个:
源自所述原生平台的数据;源自云端的数据。
一种原生平台和Flutter平台之间的数据传输装置,包括:
注册模块,用于在包含Flutter容器的Flutter网页端,注册用于为所述Flutter容器获取数据的方法;
发送模块,用于在所述Flutter网页端,将所述方法的方法名以及所述Flutter容器的标识发送到原生平台;
建立模块,用于在所述原生平台,基于所述Flutter容器的标识,建立适配于被所述方法名调用的、所述原生平台与所述Flutter容器之间的消息通道;
传输模块,用于基于所述消息通道,在所述原生平台与所述Flutter容器之间传输数据。
在一种示范性实施方式中,还包括:
弹出模块,用于在所述原生平台,设置所述Flutter容器的标识以及所述Flutter容器的属性参数;在所述原生平台,基于所述Flutter容器的标识以及所述Flutter容器的属性参数创建所述Flutter容器;在所述原生平台,基于与所述Flutter网页端之间的事件通道向所述Flutter网页端发送弹出指令,所述弹出指令用于指示弹出所述Flutter容器;在所述Flutter网页端,基于所述弹出指令弹出所述Flutter容器。
在一种示范性实施方式中,所述发送模块,用于基于Flutter Plugin方式,将所述方法名以及所述Flutter容器的标识发送到原生平台。
在一种示范性实施方式中,所述传输模块,用于当在所述原生平台的业务代码中检索到包含所述方法名的调用命令时,从所述调用命令中获取作为数据接收对象的、目标Flutter容器的标识;基于所述目标Flutter容器的标识,确定所述原生平台与所述目标Flutter容器之间的消息通道;基于所述原生平台与所述目标Flutter容器之间的消息通道,从所述原生平台向所述目标Flutter容器发送下列数据中的至少一个:源自所述原生平台的数据;源自云端的数据。
一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时可实现如上任一项所述的原生平台和Flutter平台之间的数据传输方法的步骤。
一种电子设备,该电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如上任一项所述的原生平台和Flutter平台之间的数据传输方法。
一种计算机程序产品,包括计算机指令,所述计算机指令在被处理器执行时实施如上任一项所述的原生平台和Flutter平台之间的数据传输方法。
从上述技术方案可以看出,在本发明实施方式中,在包含Flutter容器的Flutter网页端注册用于为Flutter容器获取数据的方法;在Flutter网页端,将方法的方法名以及Flutter容器的标识发送到原生平台;在原生平台,基于Flutter容器的标识,建立适配于被方法名调用的、原生平台与Flutter容器之间的消息通道;基于消息通道,在原生平台与Flutter容器之间传输数据。可见,在本发明实施方式中,原生平台基于Flutter容器的标识建立可被该方法名调用的、与该标识对应的Flutter容器之间的消息通道,即实现消息通道与Flutter容器的绑定,从而无需开发人员记忆消息通道的标识,即可实现原生平台和Flutter平台之间的数据传输。
而且,在本发明实施方式中,通过在原生平台的业务代码中应用包含方法名的调用命令,可以便利地向目标Flutter容器发送数据。而且,发送到目标Flutter容器的数据类型具有多种实施方式,具有广泛的适用性。
附图说明
为了更清楚地说明本发明实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施方式的原生平台和Flutter平台之间的数据传输方法的流程图。
图2是本发明实施方式的原生平台和Flutter平台之间的数据传输过程的示范性流程图。
图3是本发明实施方式的原生平台和Flutter平台之间的数据传输装置的示范性结构图。
图4是本发明实施方式中的电子设备的示范性结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
为了描述上的简洁和直观,下文通过描述若干代表性的实施方式来对本发明的方案进行阐述。实施方式中大量的细节仅用于帮助理解本发明的方案。但是很明显,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。由于汉语的语言习惯,下文中没有特别指出一个成分的数量时,意味着该成分可以是一个也可以是多个,或可理解为至少一个。
下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
本发明实施方式的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施方式例如能够以除了在这里图示或描述的那些以外的顺序实施。
考虑到现有技术中需要开发人员人工记忆消息通道标识以将消息通道与Flutter容器绑定的缺陷,本发明实施方式的Flutter网页端将获取数据的方法名和Flutter容器的标识发送到原生平台,原生平台基于Flutter容器的标识建立可被该方法名调用的、与对应于该标识的Flutter容器的消息通道,即实现消息通道与Flutter容器的绑定,从而无需开发人员记忆消息通道的标识,即可实现原生平台和Flutter平台之间的数据传输。
图1是本发明实施方式的原生平台和Flutter平台之间的数据传输方法的流程图。
如图1所示,该方法包括:
步骤101:在包含Flutter容器的Flutter网页端,注册用于为Flutter容器获取数据的方法(method)。
在这里,在Flutter网页端中注册用于为Flutter网页端中的Flutter容器获取数据的方法。其中,方法是可以通过对象调用的函数,可以实施为包含执行特定功能的语句块。
比如,在Flutter网页端中注册方法名为ReceiveMsg的方法ReceiveMsg()。利用该方法ReceiveMsg(),可以为Flutter网页端中的Flutter容器获取数据。在方法ReceiveMsg()的注册过程中,可以定义该方法的输入变量、处理逻辑以及返回值。其中:输入变量声明处理逻辑的输入值;返回值包含该处理逻辑的输出值。
在针对已注册的方法ReceiveMsg()的调用命令中,通常包含方法名ReceiveMsg以及输入变量的具体值。当在原生平台中接收到调用命令时,基于调用命令中的方法名ReceiveMsg确定出需要被调用的方法为ReceiveMsg(),而且将包含在调用命令中的、输入变量的具体值赋值给方法ReceiveMsg()中的输入变量。方法ReceiveMsg()被赋值后执行处理逻辑,然后输出执行该处理逻辑所得到的返回值。
在方法ReceiveMsg()的注册过程中,还可以在输入变量中定义用于指示数据接收对象的目标变量,以利用目标变量指示返回值的接收对象。当在原生平台中接收到调用命令时,将调用命令中所包含的、目标Flutter容器的标识作为目标变量的具体值赋值给目标变量,从而指示方法ReceiveMsg()的返回值被发送到目标Flutter容器。
以上示范性描述了在Flutter网页端注册用于获取数据的方法的典型实例,本领域技术人员可以意识到,这种方式仅是示范性的,并不用于限定本发明实施方式的保护范围。
步骤102:在Flutter网页端,将方法的方法名以及Flutter容器的标识发送到原生平台。
在这里,基于Flutter Plugin方式,将方法名以及需要基于该方法名接收数据的Flutter容器的标识发送到原生平台。比如,在Flutter Plugin方式中,可以通过平台信道(platform channel),将方法的方法名以及Flutter容器的标识发送到原生平台。
可见,本发明实施方式可以便利地利用Flutter Plugin方式,将方法名以及Flutter容器的标识发送到原生平台。
比如,当已注册方法ReceiveMsg()时,假定后续需要利用该已注册方法获取数据的Flutter容器的数目为一个,且该Flutter容器的标识为ABC,则Flutter网页端将标识ABC和方法名ReceiveMsg发送到原生平台。
再比如,当已注册方法ReceiveMsg()时,假定后续需要利用该已注册方法获取数据的Flutter容器为两个,且这两个Flutter容器的标识分别为ABC和DEF,则将标识ABC、标识DEF和方法名ReceiveMsg发送到原生平台。
在这里,原生平台可以实施为Android平台或iOS平台,本发明实施方式对此并无限定。
步骤103:在原生平台,基于Flutter容器的标识,建立适配于被方法名调用的、原生平台与Flutter容器之间的消息通道。
在这里,原生平台获取到方法名以及Flutter容器的标识后,首先基于Flutter容器的标识确定出具体的Flutter容器,然后建立适配于被该方法名调用的、原生平台与Flutter容器之间的消息通道。
在步骤103中,可以建立原生平台与Flutter容器之间的消息通道。Flutter网页端中的Flutter容器的数目可以为多个,相应的消息通道的数目也可以为多个。多个消息通道可以被共同的方法名调用。
比如,当原生平台接收到标识ABC和方法名ReceiveMsg时,则在步骤103中建立适配于被方法名ReceiveMsg调用的、原生平台与Flutter容器ABC之间的消息通道。
再比如,当原生平台接收到标识ABC、标识DEF和方法名ReceiveMsg时,则在步骤103中建立适配于被方法名ReceiveMsg调用的、原生平台与Flutter容器ABC之间的第一消息通道,并建立适配于被方法名ReceiveMsg调用的、原生平台与Flutter容器DEF之间的第二消息通道。可见,第一消息通道中包含原生平台与Flutter容器ABC之间的绑定关系;第二消息通道中包含原生平台与Flutter容器DEF之间的绑定关系。因此,无需开发人员记忆消息通道的标识,即可实现原生平台和Flutter容器之间的绑定。
步骤104:基于消息通道,在原生平台与所述Flutter容器之间传输数据。
可见,在本发明实施方式中,原生平台基于Flutter容器的标识建立有可被该方法名调用的、与Flutter容器的消息通道,实现了消息通道与Flutter容器的绑定,从而无需开发人员记忆消息通道的标识,即可实现原生平台和Flutter平台之间的数据传输。
在一个示范性实施方式中,当在原生平台的业务代码中检索到包含方法名的调用命令时,从调用命令中获取作为数据接收对象的、目标Flutter容器的标识;基于目标Flutter容器的标识,确定原生平台与目标Flutter容器之间的消息通道;基于原生平台与目标Flutter容器之间的消息通道,从原生平台向目标Flutter容器发送数据。其中,发送的数据可以为源自原生平台的数据或源自云端的数据。
可见,在本发明实施方式中,通过在原生平台的业务代码中应用包含方法名的调用命令,可以便利地向目标Flutter容器发送数据。而且,发送到目标Flutter容器的数据类型具有多种实施方式,具有广泛的适用性。
而且,在本发明实施方式中,Flutter容器还可以基于消息通道向原生平台发送数据。
在一个实施方式中,该方法还包括:在原生平台,设置Flutter容器的标识以及Flutter容器的属性参数;在原生平台,基于Flutter容器的标识以及Flutter容器的属性参数创建Flutter容器;在原生平台,基于与Flutter网页端之间的事件通道(Event Channel)向Flutter网页端发送弹出指令,弹出指令用于指示弹出Flutter容器;在Flutter网页端,基于弹出指令弹出Flutter容器。其中:Flutter容器的属性参数可以包括:容器宽度、容器高度、容器对齐属性、容器颜色属性和容器的子组件,等等。在原生平台创建容器的过程中,按照属性参数具体设置所创建容器的属性,并将该所创建容器的标识赋值为设置的标识。
可见,通过在Flutter网页端弹出原生平台所创建的Flutter容器,便于Flutter容器对从原生平台接收到的数据执行显示、二次开发等后续处理。
图2是本发明实施方式的原生平台和Flutter平台之间的数据传输过程的示范性流程图。
如图2所示,该方法包括:
步骤201:原生平台创建Flutter容器。
举例,原生平台可以基于第一Flutter容器的属性参数和第一Flutter容器的标识创建第一Flutter容器,基于第二Flutter容器的属性参数和第二Flutter容器的标识创建第二Flutter容器,基于第三Flutter容器的属性参数和第三Flutter容器的标识创建第三Flutter容器。其中,第一Flutter容器的属性参数、第一Flutter容器的标识、第二Flutter容器的属性参数、第二Flutter容器的标识、第三Flutter容器的属性参数和第三Flutter容器的标识,都可以由开发人员手动设置或由机器根据预定规则自动设置。
步骤202:原生平台在Flutter网页端中弹出该Flutter容器。
承接上例,原生平台基于与Flutter网页端之间的事件通道向Flutter网页端发送弹出指令,弹出指令用于指示在Flutter网页端中弹出第一Flutter容器、第二Flutter容器和第三Flutter容器。
步骤203:在Flutter网页端中,注册用于获取数据的方法。
比如,原生平台在Flutter网页端中注册用于获取数据的方法ReceiveMsg()。注册过程包括:定义该方法的输入变量、处理逻辑以及返回值。其中:输入变量声明处理逻辑的输入值;返回值包含该处理逻辑的输出值。举例,输入变量可以包括:(1)、用于指示接收返回值的对象的目标变量;(2)、设备的当前电量变量;处理逻辑可以包括:基于设备的当前电量变量计算出待机时间的运算规则;返回值可以包括:待机时间。
步骤204:在Flutter网页端中,读取期望从原生平台接收数据的Flutter容器的标识。
承接上例,假定开发人员设置第一Flutter容器和第二Flutter容器需要从原生平台接收数据,则从第一Flutter容器中自动读取第一Flutter容器的标识(假定为ABC)以及从第二Flutter容器中自动读取第二Flutter容器的标识(假定为DEF)。
步骤205:Flutter网页端基于Flutter Plugin方式,将Flutter容器的标识以及方法名发送到原生平台。
承接上例,Flutter网页端基于Flutter Plugin方式,将标识ABC和标识DEF以及方法名ReceiveMsg发送到原生平台。
步骤206:原生平台基于该Flutter容器的标识确定出需要与原生平台建立消息通道的Flutter容器。
承接上例,原生平台基于标识ABC和标识DEF,确定第一Flutter容器和第二Flutter容器为需要与原生平台建立消息通道的Flutter容器。
步骤207:建立原生平台与Flutter容器之间的消息通道,该消息通道能够被方法名调用的。
承接上例,建立适配于被方法名ReceiveMsg调用的、原生平台与第一Flutter容器之间的第一消息通道,并建立适配于被方法名ReceiveMsg调用的、原生平台与第二Flutter容器之间的第二消息通道。可见,第一消息通道中包含原生平台与第一Flutter容器之间的绑定关系;第二消息通道中包含原生平台与第二Flutter容器之间的绑定关系。因此,无需开发人员记忆消息通道的标识,即可实现原生平台和Flutter容器之间的绑定。
步骤208:当在原生平台的业务代码中检索到包含方法名的调用命令时,从调用命令中获取作为数据接收对象的、目标Flutter容器的标识。
承接上例,当在原生平台的业务代码中检索到包含ReceiveMsg的调用命令时,从调用命令中进一步获取目标Flutter容器的标识。假定调用命令中的目标Flutter容器的标识为DEF,则确定第二Flutter容器为目标Flutter容器。
步骤209:基于目标Flutter容器的标识,确定原生平台与目标Flutter容器之间的消息通道。
承接上例,基于第二Flutter容器的标识DEF,确定原生平台与第二Flutter容器之间的消息通道为第二消息通道。
步骤210:基于该消息通道,从原生平台向目标Flutter容器发送数据。
承接上例,将包含在调用命令中的、设备的当前电量的采集值赋值给方法ReceiveMsg()中的当前电量变量。方法ReceiveMsg()被赋值后,执行处理逻辑以计算出待机时间。原生平台通过该第二消息通道,向第二Flutter容器发送包含该待机时间的数据。
步骤211:目标Flutter容器接收该数据。
承接上例,第二Flutter容器接收到包含该待机时间的数据。然后,可以在第二Flutter容器中对待机时间执行显示,或针对待机时间执行二次开发等后续处理。
图3是本发明实施方式的原生平台和Flutter平台之间的数据传输装置的示范性结构图。
如图3所示,数据传输装置300包括:
注册模块301,用于在包含Flutter容器的Flutter网页端,注册用于为Flutter容器获取数据的方法;
发送模块302,用于在Flutter网页端,将方法的方法名以及Flutter容器的标识发送到原生平台;
建立模块303,用于在原生平台,基于Flutter容器的标识,建立适配于被方法名调用的、原生平台与Flutter容器之间的消息通道;
传输模块304,用于基于消息通道,在原生平台与Flutter容器之间传输数据。
在一个示范性实施方式中,还包括弹出模块305,用于在原生平台,设置Flutter容器的标识以及Flutter容器的属性参数;在原生平台,基于Flutter容器的标识以及Flutter容器的属性参数创建Flutter容器;在原生平台,基于与Flutter网页端之间的事件通道向Flutter网页端发送弹出指令,弹出指令用于指示弹出Flutter容器;在Flutter网页端,基于弹出指令弹出Flutter容器。
在一个示范性实施方式中,发送模块302,用于基于Flutter Plugin方式,将方法名以及Flutter容器的标识发送到原生平台。
在一个示范性实施方式中,传输模块304,用于当在原生平台的业务代码中检索到包含方法名的调用命令时,从调用命令中获取作为数据接收对象的、目标Flutter容器的标识;基于目标Flutter容器的标识,确定原生平台与目标Flutter容器之间的消息通道;基于原生平台与目标Flutter容器之间的消息通道,从原生平台向目标Flutter容器发送下列数据中的至少一个:源自原生平台的数据;源自云端的数据。
综上,在本发明实施方式中,在包含Flutter容器的Flutter网页端注册用于获取数据的方法;将方法的方法名以及Flutter容器的标识发送到原生平台;基于Flutter容器的标识,建立适配于被方法名调用的、原生平台与Flutter容器之间的消息通道;基于消息通道,在原生平台与Flutter容器之间传输数据。可见,在本发明实施方式中,原生平台基于Flutter容器的标识建立可被该方法名调用的、与该标识对应的Flutter容器之间的消息通道,即实现消息通道与Flutter容器的绑定,从而无需开发人员记忆消息通道的标识,即可实现原生平台和Flutter平台之间的数据传输。
而且,在本发明实施方式中,通过在原生平台的业务代码中应用包含方法名的调用命令,可以便利地向目标Flutter容器发送数据。而且,发送到目标Flutter容器的数据类型具有多种实施方式,具有广泛的适用性。
本发明实施方式还提供一种计算机可读介质,计算机可读存储介质存储指令,指令在由处理器执行时可执行如上的原生平台和Flutter平台之间的数据传输方法中的步骤。实际应用中的计算机可读介质可以是上述实施方式中描述的设备/装置/系统中所包含的,也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或多个程序被执行时,可以实现上述各实施方式描述的原生平台和Flutter平台之间的数据传输方法。根据本发明公开的实施方式,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本发明保护的范围。在本发明公开的实施方式中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
如图4所示,本发明实施方式还提供一种电子设备,其中可以集成本发明实施方式实现方法的装置。如图4所示,其示出了本发明实施方式所涉及的电子设备的示范性结构图,
具体地:该电子设备可以包括一个或一个以上处理核心的处理器901、一个或一个以上计算机可读存储介质的存储器902以及存储在存储器上并可在处理器上运行的计算机程序。在执行存储器902的程序时,可以实现上述原生平台和Flutter平台之间的数据传输方法。
在实际应用中,该电子设备还可以包括电源903、输入单元904、以及输出单元905等部件。本领域技术人员可以理解,图4中示出的电子设备的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:处理器901是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器902内的软件程序和/或模块,以及调用存储在存储器902内的数据,执行服务器的各种功能和处理数据,从而对该电子设备进行整体监控。存储器902可用于存储软件程序以及模块,即上述计算机可读存储介质。处理器901通过运行存储在存储器902的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器902还可以包括存储器控制器,以提供处理器901对存储器902的访问。
该电子设备还包括给各个部件供电的电源903,可以通过电源管理系统与处理器901逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源903还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。该电子设备还可包括输入单元904,该输入单元904可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。该电子设备还可以包括输出单元905,该输出单元905可以用于显示由用户输入的信息或提供给用户的信息以及各种图像用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
本发明实施方式还提供一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令在被处理器执行时实施如上述任一实施方式所述的原生平台和Flutter平台之间的数据传输方法。
本发明附图中的流程图和框图,示出了按照本发明公开的各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标准的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文中应用了具体实施方式对本发明的原理及实施方式进行了阐述,以上实施方式的说明只是用于帮助理解本发明的方法及其核心思路,并不用于限制本发明。对于本领域的技术人员来说,可以依据本发明的思路、精神和原则,在具体实施方式及应用范围上进行改变,其所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种原生平台和Flutter平台之间的数据传输方法,其特征在于,包括:
在包含Flutter容器的Flutter网页端,注册用于为所述Flutter容器获取数据的方法;
在所述Flutter网页端,将所述方法的方法名以及所述Flutter容器的标识发送到原生平台;
在所述原生平台,基于所述Flutter容器的标识,建立适配于被所述方法名调用的、所述原生平台与所述Flutter容器之间的消息通道;
基于所述消息通道,在所述原生平台与所述Flutter容器之间传输数据。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述原生平台,设置所述Flutter容器的标识以及所述Flutter容器的属性参数;
在所述原生平台,基于所述Flutter容器的标识以及所述Flutter容器的属性参数创建所述Flutter容器;
在所述原生平台,基于与所述Flutter网页端之间的事件通道向所述Flutter网页端发送弹出指令,所述弹出指令用于指示弹出所述Flutter容器;
在所述Flutter网页端,基于所述弹出指令弹出所述Flutter容器。
3.根据权利要求1所述的方法,其特征在于,所述将所述方法名以及所述Flutter容器的标识发送到原生平台包括:
基于Flutter Plugin方式,将所述方法名以及所述Flutter容器的标识发送到原生平台。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述基于所述消息通道,在所述原生平台与所述Flutter容器之间传输数据包括:
当在所述原生平台的业务代码中检索到包含所述方法名的调用命令时,从所述调用命令中获取作为数据接收对象的、目标Flutter容器的标识;
基于所述目标Flutter容器的标识,确定所述原生平台与所述目标Flutter容器之间的消息通道;
基于所述原生平台与所述目标Flutter容器之间的消息通道,从所述原生平台向所述目标Flutter容器发送下列数据中的至少一个:
源自所述原生平台的数据;源自云端的数据。
5.一种原生平台和Flutter平台之间的数据传输装置,其特征在于,包括:
注册模块,用于在包含Flutter容器的Flutter网页端,注册用于为所述Flutter容器获取数据的方法;
发送模块,用于在所述Flutter网页端,将所述方法的方法名以及所述Flutter容器的标识发送到原生平台;
建立模块,用于在所述原生平台,基于所述Flutter容器的标识,建立适配于被所述方法名调用的、所述原生平台与所述Flutter容器之间的消息通道;
传输模块,用于基于所述消息通道,在所述原生平台与所述Flutter容器之间传输数据。
6.根据权利要求5所述的装置,其特征在于,还包括:
弹出模块,用于在所述原生平台,设置所述Flutter容器的标识以及所述Flutter容器的属性参数;在所述原生平台,基于所述Flutter容器的标识以及所述Flutter容器的属性参数创建所述Flutter容器;在所述原生平台,基于与所述Flutter网页端之间的事件通道向所述Flutter网页端发送弹出指令,所述弹出指令用于指示弹出所述Flutter容器;在所述Flutter网页端,基于所述弹出指令弹出所述Flutter容器。
7.根据权利要求5所述的装置,其特征在于,
所述传输模块,用于当在所述原生平台的业务代码中检索到包含所述方法名的调用命令时,从所述调用命令中获取作为数据接收对象的、目标Flutter容器的标识;基于所述目标Flutter容器的标识,确定所述原生平台与所述目标Flutter容器之间的消息通道;基于所述原生平台与所述目标Flutter容器之间的消息通道,从所述原生平台向所述目标Flutter容器发送下列数据中的至少一个:源自所述原生平台的数据;源自云端的数据。
8.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述指令被处理器执行时可实现权利要求1-4任一项所述的原生平台和Flutter平台之间的数据传输方法的步骤。
9.一种电子设备,其特征在于,该电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现权利要求1-4任一项所述的原生平台和Flutter平台之间的数据传输方法。
10.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令在被处理器执行时实施权利要求1-4任一项所述的原生平台和Flutter平台之间的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210300626.9A CN114647519A (zh) | 2022-03-24 | 2022-03-24 | 原生平台和Flutter平台间的数据传输方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210300626.9A CN114647519A (zh) | 2022-03-24 | 2022-03-24 | 原生平台和Flutter平台间的数据传输方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114647519A true CN114647519A (zh) | 2022-06-21 |
Family
ID=81996040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210300626.9A Pending CN114647519A (zh) | 2022-03-24 | 2022-03-24 | 原生平台和Flutter平台间的数据传输方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114647519A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116755909A (zh) * | 2023-08-22 | 2023-09-15 | 成都屏盟科技有限公司 | 原生服务与html页面的通信方法、装置及存储介质 |
CN116795356A (zh) * | 2023-08-21 | 2023-09-22 | 山东为农信息科技有限公司 | Flutter与原生平台的混合开发方法、系统及装置 |
-
2022
- 2022-03-24 CN CN202210300626.9A patent/CN114647519A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795356A (zh) * | 2023-08-21 | 2023-09-22 | 山东为农信息科技有限公司 | Flutter与原生平台的混合开发方法、系统及装置 |
CN116795356B (zh) * | 2023-08-21 | 2023-11-24 | 山东为农信息科技有限公司 | Flutter与原生平台的混合开发方法、系统及装置 |
CN116755909A (zh) * | 2023-08-22 | 2023-09-15 | 成都屏盟科技有限公司 | 原生服务与html页面的通信方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107562610B (zh) | 获取页面加载时间的方法、装置、终端和介质 | |
CN114647519A (zh) | 原生平台和Flutter平台间的数据传输方法、装置及存储介质 | |
CN108255707B (zh) | 测试用例的开发角色创建方法、装置、设备及存储介质 | |
CN110708362B (zh) | 调用关系确定方法、装置、存储介质及电子设备 | |
CN109101228B (zh) | 应用程序的执行方法和装置 | |
WO2016082649A1 (zh) | 轨道交通车辆静态试验数据自动化处理方法及装置 | |
CN106557419B (zh) | 程序的测试方法及装置 | |
CN110795162B (zh) | 生成容器镜像文件的方法和装置 | |
CN115277882A (zh) | Can报文数据库建立方法、装置、车载电子设备及存储介质 | |
CN112685040A (zh) | 安卓系统中界面文件的生成方法、装置、设备及存储介质 | |
CN112306529A (zh) | 系统升级方法、装置、设备和存储介质 | |
CN115756996B (zh) | 一种芯片测试方法、装置、设备及可读存储介质 | |
CN116521533A (zh) | 一种生成方法、装置、设备及存储介质 | |
CN115169915A (zh) | 工作流检测方法、系统及电子设备 | |
CN109324824A (zh) | 流程版本切换方法、装置及计算机设备 | |
CN115269285A (zh) | 测试方法及装置、设备、计算机可读存储介质 | |
CN112905072B (zh) | 应用程序的处理方法、装置及电子设备 | |
CN114449063A (zh) | 一种报文处理方法、装置及设备 | |
CN109871226B (zh) | 下载器的配置方法、装置、介质及电子设备 | |
CN111488283B (zh) | 任务生成方法、装置、电子设备及存储介质 | |
CN110737983A (zh) | 交通工具的功能试验方法、装置、设备及存储介质 | |
CN111026466A (zh) | 文件处理方法、装置、计算机可读存储介质及电子设备 | |
CN110971665A (zh) | 一种对接多类型存储的管理方法、系统、设备及存储介质 | |
CN114666234B (zh) | 云服务构建方法及装置、存储介质及电子设备 | |
CN111581093B (zh) | 一种测试记录单的生成方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |