掌桥专利:专业的专利平台
掌桥专利
首页

基于Flutter的代码添加方法、装置、电子设备和存储介质

文献发布时间:2023-06-19 09:26:02


基于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的代码添加装置的结构框图;

图5是本发明实施例的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

以下结合附图描述根据本发明实施例的基于Flutter的代码添加方法、装置、电子设备和存储介质。

图1是根据本发明一个实施例的基于Flutter的代码添加方法的流程图。如图1所示,根据本发明一个实施例的基于Flutter的代码添加方法,包括如下步骤:

S101:读取中间代码文件。

其中,中间代码文件为对flutter代码进行前端编译后得到的,具体地说,flutter编译通常包括三个过程,(1)将flutter代码进行前端编译,生成中间代码文件;(2)对中间代码文件进行优化;(3)后端用优化后的中间代码文件生成目标代码。

在本发明的实施例中,当flutter代码通过前端编译得到中间代码文件后,并不是直接对中间代码文件进行优化以及根据对优化后的中间代码文件生成目标代码,而是将flutter代码进行前端编译,生成中间代码文件之后,读取中间代码文件。

读取中间代码文件的方式可以通过中间代码文件的存储地址读取,在具体应用中,调用flutter_tools获取中间代码文件的存储地址;然后根据存储地址获取中间代码文件,即:从中间代码文件的存储地址中读取中间代码文件。也就是说,flutter_tools获取中间代码文件的存储地址;根据存储地址获取中间代码文件。

作为一个具体的示例,如图2所示,编译开始,由原有编译逻辑(即:flutter代码)生成中间文件(即:中间代码文件),调用flutter_tools从中间代码文件的存储地址中读取中间代码文件。

S102:检测中间代码文件中的预定标识。

具体地说,可以预先向flutter代码中添加一些信息,这样,中间代码文件中带有这些信息。例如:预先向flutter代码中写入预定标识以及对应于预定标识的待添加的方法以及添加位置信息,由此,可以从中间代码文件中检测到这些信息。其中,添加位置信息包括但不限于待添加的方法的文件名,其中,待添加的方法的文件名指待添加代码要在中间代码文件中写入的位置。

作为一个具体的示例,预定标识例如为@add,如图2所示,flutter_tools从中间代码文件的存储地址中读取中间代码文件之后,flutter_tools检测中间代码文件中是否包括有@add标识。其中,如果有@add标识,则说明flutter代码中添加了一些信息,该信息不仅包括@add标识,还包括对应于该@add标识的方法体(即:待添加的代码)以及文件名等。

S103:从中间代码文件中查询对应于预定标识的待添加的方法以及添加位置信息。

结合图2所示,如果从中间代码文件中查找到@add标识,则进一步对中间代码文件进行遍历,得到@add标识对应的具体的方法体以及待添加代码要写入的文件名等。

在具体示例中,如果待添加的方法为类方法,则添加位置信息还可包括类名。

S104:向添加位置信息对应的位置添加方法,得到修改后的中间代码文件,并替换写回修改后的中间代码文件。

具体地说,根据待添加的方法的文件名,从中间代码文件中得到相应的文件;向该文件之中添加待添加的方法。作为一个具体的示例,例如:从存储地址中删除中间代码文件;将修改后的中间代码文件写入存储地址。

如图2和图3所示,向添加位置信息对应的位置添加方法,相当于对读取到的中间代码文件进行修改,即:向中间代码文件中的上述文件夹中写入待添加的代码。修改完成后,保存并替换掉读取中间代码文件的存储地址下的中间代码文件。

进一步地,如图2所示,基于Flutter的代码添加方法还包括:如果所述中间代码文件中不包括预定标识,则直接退出基于Flutter的代码添加方法的流程,否则在替换写回修改后的中间代码文件后,退出基于Flutter的代码添加方法的流程。

以向业务方代码中添加方法为例,现有技术中,即:基于现有的flutter框架能力,如果想要向业务方代码中添加方法,只能要求业务方单独去添加,会增加开发的沟通成本、容易遗漏、后期维护也比较困难;如果需要向系统代码中添加代码,修改之后如果系统代码更新,自身添加的方法可能会丢失,不易于维护。而采用本发明实施例的基于Flutter的代码添加方法,并不直接向业务方代码或者系统代码中添加方法,而是在flutter代码添加一些方法体、预定标识以及添加位置信息即可,而后对flutter代码进行编译得到中间代码文件,并且自动对中间代码文件进行分析,如果从中间代码文件中查找到预定标识,则可以进一步根据预定标识对中间代码文件进行遍历,以查找出待添加的方法以及添加位置信息,最后,依据查找出待添加的方法以及添加位置信息,自动向中间代码文件中写入添加的程序。该方法使用了面向切面的编程思想,使用了修改编译中间代码文件的技术,由此,实现了在一处(即:Flutter的代码)添加方法就能够在多处生效,免除了人工的重复添加方法的操作,节约沟通成本,减少出错,减少维护成本。

例如:对于业务方代码,只需要在一处添加,在业务方代码中多处使用该方法的地方均能够生效使用,有效避免添加遗漏,对于系统代码,如系统代码更新后,只需要在更新的flutter代码中添加一次方法体、预定标识以及添加位置信息,便可以避免更新后的系统代码中丢失自身添加的方法。

在基于Flutter的代码添加方法的流程结束后,还包括:对中间代码文件进行优化;根据优化后的中间代码文件通过后端生成目标代码。由此,实现了在一处(即:Flutter的代码)添加方法就能够在多处生效,免除了人工的重复添加方法的操作,具有节约沟通成本,减少出错,减少维护成本的优点。

图4是根据本发明一个实施例的基于Flutter的代码添加装置的结构框图。如图4所示,根据本发明一个实施例的基于Flutter的代码添加装置,包括:读取模块410、检测模块420、查询模块430和写入模块440。

其中,读取模块410,用于读取中间代码文件,其中,所述中间代码文件为对flutter代码进行前端编译后得到;

检测模块420,用于检测所述中间代码文件中的预定标识;

查询模块430,用于从所述中间代码文件中查询对应于所述预定标识的待添加的方法以及添加位置信息;

写入模块440,用于向所述添加位置信息对应的位置添加所述方法,得到修改后的中间代码文件,并替换写回修改后的中间代码文件。

在本发明的一个实施例中,还包括:代码预置模块(图4中没有示出),用于预先向所述flutter代码中写入所述预定标识以及对应于所述预定标识的待添加的方法以及添加位置信息。

在本发明的一个实施例中,所述添加位置信息包括待添加的方法的文件名,所述写入模块440,具体用于:根据所述待添加的方法的文件名,从所述中间代码文件中得到相应的文件;向所述文件中添加所述待添加的方法。

在本发明的一个实施例中,所述读取模块410,具体用于:获取所述中间代码文件的存储地址;根据所述存储地址获取所述中间代码文件;

所述写入模块440,具体用于:从所述存储地址中删除所述中间代码文件;将所述修改后的中间代码文件写入所述存储地址。

在本发明的一个实施例中,还包括:退出模块(图4中没有示出),用于:如果所述中间代码文件中不包括所述预定标识,则直接退出所述基于Flutter的代码添加方法的流程,否则在所述写入模块替换写回修改后的中间代码文件后,退出所述基于Flutter的代码添加方法的流程。

在本发明的一个实施例中,还包括:优化模块(图4中没有示出),用于在所述退出模块退出所述基于Flutter的代码添加方法的流程结束之后,对所述中间代码文件进行优化;根据优化后的中间代码文件通过后端生成目标代码。

在本发明的一个实施例中,如果所述待添加的方法为类方法,则所述添加位置信息还包括类名。

根据本发明实施例的基于Flutter的代码添加装置,使用了面向切面的编程思想,使用了修改编译中间代码文件的技术,由此,实现了在一处(即:Flutter的代码)添加方法就能够在多处生效,免除了人工的重复添加方法的操作,节约沟通成本,减少出错,减少维护成本。

另外,根据本发明实施例的基于Flutter的代码添加装置的具体实现方式与本发明实施例的基于Flutter的代码添加方法的具体实现方式类似,具体请参见方法部分的描述,为了减少冗余,此处不做赘述。

在本发明的一个实施例中,提供能够实现上述实施例中的基于Flutter的代码添加方法中全部步骤的一种电子设备的具体实施方式,参见图5,所述电子设备具体包括如下内容:

处理器(processor)501、存储器(memory)502、通信接口(CommunicationsInterface)503和通信总线504;

其中,所述处理器501、存储器502、通信接口503通过所述通信总线504完成相互间的通信;所述通信接口503用于实现服务器与客户端之间的信息传输;

所述处理器501用于调用所述存储器502中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:读取中间代码文件,其中,所述中间代码文件为对flutter代码进行前端编译后得到;检测所述中间代码文件中的预定标识;从所述中间代码文件中查询对应于所述预定标识的待添加的方法以及添加位置信息;向所述添加位置信息对应的位置添加所述方法,得到修改后的中间代码文件,并替换写回修改后的中间代码文件。

从上述描述可知,本发明的实施例提供的电子设备,实现了在一处(即:Flutter的代码)添加方法就能够在多处生效,免除了人工的重复添加方法的操作,节约沟通成本,减少出错,减少维护成本。

本发明的实施例提供能够实现上述实施例的基于Flutter的代码添加方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:读取中间代码文件,其中,所述中间代码文件为对flutter代码进行前端编译后得到;检测所述中间代码文件中的预定标识;从所述中间代码文件中查询对应于所述预定标识的待添加的方法以及添加位置信息;向所述添加位置信息对应的位置添加所述方法,得到修改后的中间代码文件,并替换写回修改后的中间代码文件。

此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的指标监控方法。

此外,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 基于Flutter的代码添加方法、装置、电子设备和存储介质
  • 代码添加方法、装置、电子设备及计算机可读存储介质
技术分类

06120112162683