CN112131300A - 一种基于Flutter的跨平台数据制作方法和装置 - Google Patents
一种基于Flutter的跨平台数据制作方法和装置 Download PDFInfo
- Publication number
- CN112131300A CN112131300A CN202010787567.3A CN202010787567A CN112131300A CN 112131300 A CN112131300 A CN 112131300A CN 202010787567 A CN202010787567 A CN 202010787567A CN 112131300 A CN112131300 A CN 112131300A
- Authority
- CN
- China
- Prior art keywords
- data
- parameters
- layer
- flutter
- generating
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/26—Visual data mining; Browsing structured data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明的一种基于Flutter的跨平台数据制作方法和装置针对农药溯源特点搭建基于区块链的架构,在数据层和网络层方面可以对数据进行多点录入并对录入数据的人员进行身份验证;通过SDK获取数据制作参数,所述数据制作参数包括基础类参数和个性化参数;基于所述参数,生成承载所述参数的数据制作图层;根据所述数据制作图层,在Flutter界面生成所述数据层。本发明能够在Android、iOS上都能达到同样的数据界面渲染效果,并且利用Flutter的高性能渲染功能,能够根据下发的图形描述参数进行Flutter平台的Widget组件生成,有效的解决了数据展示的需求,并且有极强的拓展性。
Description
技术领域
本发明涉及数据可视化领域,与区块链溯源系统相连接,具体的,涉及一种基于Flutter 的跨平台数据制作方法和装置
背景技术
近些年来,随着经济和信息技术飞速发展,人们的生活水平也不断提高,现在的人们不再为温饱而发愁,反而更加注重自身健康。农药的使用则是当前食品安全的一大问题,适量、合理种类的农药可以保障食品不受病虫害侵扰,但肆意的使用则会对食品带来安全问 题,为人体带来健康威胁,建立一套统一实用的农药安全信息追溯平台是国家和民众的迫切 需求,也是本发明所研究和实现的内容。传统的农药供应链体系在很大程度上是一种以降低成 本为向导、协作范围相对有限的线性供应链,今天这种供应链正面临着如何“互联网化”的 巨大挑战。部分传统农药销售企业借着互联网这股大风,将线下的生意搬到线上销售,坐上 电子商务这条船,乘风破浪,迎接新的挑战与机遇。然而农药线上销售跟其他商品线上销售 略有不同,农药更加注重食用的安全性和健康性,因此将农药溯源平台和农药电商平台相结 合才能完善最终的销售环节。
近年来,Flutter跨平台数据展示技术已广泛应用于工业、交通、农业、银行等领域; 但是,在现在的农药数据查询系统中,一般都是采用传统的Flutter数据展示系统系统,当 有些数据系统要建设许多关联点成本高效率低,采用该种传统监管方式将会造成实现复杂、 成本较高的问题。
发明内容
为解决上述问题,本发明提供了一套共有参数来描述对界面的绘制的方法,本方法建立 在Flutter框架的基础之上,能够在Android、iOS上都能达到同样的数据界面渲染效果,并 且利用Flutter的高性能渲染功能,实现了一种针对Android、iOS双平台支持的Flutter数 据展示系统系统,能够根据下发的图形描述参数进行Flutter平台的Widget组件生成,有效 的解决了数据展示的需求,并且有极强的拓展性。
本发明请求保护一种基于Flutter的跨平台数据制作方法,用于区块链农药溯源,其特征 在于,包括:通过SDK获取数据制作参数,所述数据制作参数包括基础类参数和个性化参数; 基于所述参数,生成承载所述参数的数据制作图层;根据所述数据制作图层,在Flutter界面 生成所述数据。
具体的,所述基础类参数包括:宽度、高度、XY坐标、旋转和值的参数;所述个性化参 数包括:文字图层参数、图片图层参数和二维码图层参数。
具体的,所述基于所述参数,生成承载所述参数的数据制作图层,包括:基于所述参数, 生成承载所述参数的文字图层、图片图层和/或二维码图层。
具体的,所述通过SDK获取数据制作参数,所述数据制作参数包括基础类参数和个性化参 数,之后还包括:解析所述数据制作参数,生成解析的JSON数据。
具体的,所述根据所述数据制作图层,在Flutter界面生成所述数据,包括:通过Flutter 组件调整所述数据制作图层的顺序、时间和/或逻辑;根据调整顺序、时间和/或逻辑后的图 层在Flutter界面生成所述数据。
具体的,所述文字图层参数包括:字体类型、字体粗细、字体大小、字体颜色、点击、行间距以及文本属性;和/或,所述图片图层参数包括:圆角以及对齐缩放;和/或,所述二维码图层参数包括:图标宽度、图标高度、图标路径、留白距离以及美化随机颜色。
具体的,还包括:保存或显示所述生成的数据。
具体的,还包括:所述区块链农药溯源包括5类用户,所述5类用户为消费者、制造者、 监管者、销售者、系统管理员;
具体的所述通过SDK获取数据制作参数前,所述销售者要跟合作的所述制造者进行谈判并 签订经济协议,而后要对谈判成功的合作的所述制造者进行规模评估、环境评估、必要技术 培训以及分配账户,之后合作的所述制造者才具有了农药溯源平台的操作权限;
在区块链的数据层和网络层方面可以对数据进行多点录入并对录入数据的人员进行身份 验证;在区块链的共识层和规则层对数据的公式和约定进行规则限定。
具体的,还包括:所述系统管理员会找到合作农户进行统一的农药回收,农药回收后的 加工、检疫、销售、物流等溯源信息也会被企业各个流程上的相应人员依照规定进行溯源信 息的录入保存,所述溯源信息的录入保存之后被SDK访问获取数据制作参数。
具体的,还包括:所述Flutter界面使用自身的高性能Skia渲染引擎自绘,界面开发语言 使用dart,底层渲染引擎使用C,C++;所述Flutter界面界面设置采用树结构构建;
所述数据制作图层包括行政许可、公示公告、政策法规、禁限用农药、标准规范、行业 动态信息。
具体的,对所述树结构进行布局,将布局拆分成基本的元素:找出行和列,并确定是否 有网格吗、有重叠的元素、需要选项卡,以及需要对齐、填充和边框的区域;
所述树结构采用线性布局,child分别是imageview和TextView;body部分采用一个Column 和ListView。
具体的,还包括:所述在跨平台Flutter界面生成所述数据,为可以在ios平台和android 平台的Flutter界面生成所述数据。
本发明还请求保护一种基于Flutter的跨平台数据制作装置,用于区块链农药溯源,其特 征在于,包括:获取单元,用于通过SDK获取数据制作参数,所述数据制作参数包括基础类参 数和个性化参数;第一生成单元,用于基于所述参数,生成承载所述参数的数据制作图层; 第二生成单元,用于根据所述数据制作图层,在Flutter界面生成所述数据。
本发明还请求保护一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所 述程序被处理器执行时实现上述所述的方法。
本发明还请求保护一种电子设备,其特征在于,包括:一个或多个处理器;存储装置, 用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所 述一个或多个处理器实现如上述所述的方法。
本发明的一种基于Flutter的跨平台数据制作方法和装置针对农药溯源特点搭建基于区 块链的架构,在数据层和网络层方面可以对数据进行多点录入并对录入数据的人员进行身份 验证;通过SDK获取数据制作参数,所述数据制作参数包括基础类参数和个性化参数;基于 所述参数,生成承载所述参数的数据制作图层;根据所述数据制作图层,在Flutter界面生 成所述数据层。本发明能够在Android、iOS上都能达到同样的数据界面渲染效果,并且利用 Flutter的高性能渲染功能,能够根据下发的图形描述参数进行Flutter平台的Widget组件 生成,有效的解决了数据展示的需求,并且有极强的拓展性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简 单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的 限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图 获得其他相关的附图。
图1为本发明所涉及的一种基于Flutter的跨平台数据制作方法的工作流程图;
图2为本发明所涉及的一种基于Flutter的跨平台数据制作装置的模块结构图;
图3为本发明所涉及的一种基于Flutter的跨平台数据制作装置的系统结构图;
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例 性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。 相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传 达给本领域的技术人员。
参照附图1,本发明所涉及的一种基于Flutter的跨平台数据制作方法的工作流程图;本 发明请求保护一种基于Flutter的跨平台数据制作方法,用于区块链农药溯源,其特征在于, 包括:通过SDK获取数据制作参数,所述数据制作参数包括基础类参数和个性化参数;基于所 述参数,生成承载所述参数的数据制作图层;根据所述数据制作图层,在Flutter界面生成所 述数据。
具体的,所述基础类参数包括:宽度、高度、XY坐标、旋转和值的参数;所述个性化参 数包括:文字图层参数、图片图层参数和二维码图层参数。
具体的,所述基于所述参数,生成承载所述参数的数据制作图层,包括:基于所述参数, 生成承载所述参数的文字图层、图片图层和/或二维码图层。
具体的,所述通过SDK获取数据制作参数,所述数据制作参数包括基础类参数和个性化参 数,之后还包括:解析所述数据制作参数,生成解析的JSON数据。
JSON是一种轻量级的数据交换格式,具有较好的简单性,灵活性等优点。在Android 或IOS的开发中,JSON的解析API包含在Android或IOS的SDK中,数据交互原理流程一 般为:首先客户端发送数据请求,其次服务器响应后并利用JSON包将Java对象转换为JSON 格式的数据返回到客户端,最后客户端接收到服务器发来JSON格式的数据后,将这些数据 逐一赋值给JavaBean,在界面上会显示解析后字样。
构造json树的结构,由ASCII字符组成,键值对中的"键"是用字符串表示,创建json 树,解析json树,设置一个任务,进行json的创建和解析,最后串口打印结果。
解析JSON树时,采用如下方法,具体的建立上海、深圳两地的农药溯源系统的json树:
设置一个任务,进行json的创建和解析
具体的,所述根据所述数据制作图层,在Flutter界面生成所述数据,包括:通过Flutter 组件调整所述数据制作图层的顺序、时间和/或逻辑;根据调整顺序、时间和/或逻辑后的图 层在Flutter界面生成所述数据。
具体的,所述文字图层参数包括:字体类型、字体粗细、字体大小、字体颜色、点击、行间距以及文本属性;和/或,所述图片图层参数包括:圆角以及对齐缩放;和/或,所述二维码图层参数包括:图标宽度、图标高度、图标路径、留白距离以及美化随机颜色。
具体的,还包括:保存或显示所述生成的数据。
具体的,还包括:所述区块链农药溯源包括5类用户,所述5类用户为消费者、制造者、 监管者、销售者、系统管理员;
由于不同身份的用户对系统使用有不同需求,比如生产者和销售者有查询节点的需求以 及将自己生产的农药录入系统的责任。消费者则有查询自己购买农药全流程信息的权限;监 督部门可以查询任意一个农药信息的权限;系统管理员有构建系统以及新建流程,选择流程 的权限。不同身份的用户通过被分配不同的系统界面以达到权限的控制与管理的目的。
使用Lrwidget,privateChainConn等类来实现在溯源系统中录入溯源信息的功能。在 溯源信息录入系统中,需要手动在右侧窗口填写或选择溯源信息,并由二维码扫码枪扫描产 品标签以获得产品标识,之后将某一产品对应的溯源信息录入到溯源系统中。
通过扫描二维码标签得到产品的基本信息及标识号,然后消费者到厂商提供的官网,用产 品标识号查询产品的真伪,从而实现溯源和防伪。查询过程:首次查询产品标识号时,系统将产 品的真伪信息直接返回给查询用户,同时数据库记录该产品被查询的时间、手机号码等信息。 当产品标识号重复被查询时,系统会与数据库中已有的查询记录进行比对,若信息(如手机号 码)相同则返回合法产品信息,若信息不同则记录本次查询信息并核查该标识号的被查询次数 是否超过限制。如果产品的查询次数超过限制,则提醒消费者该产品已被多次查询,谨防假冒。
Navigation类为导航窗口,使用QT实现,点击导航窗口的左侧能够切换右侧窗体的内 容。在Navigation类中,会使用一个名为customq-label的类,这个类继承qt中的Qlabel类,该类与Qlabel类不同之处在于该类额外定义了一个鼠标点击事件,发生鼠标点击事件时能够改变自身颜色,并通知其他label改变颜色,随后发出一个信号以通知右侧窗口改变显示内容。Dialogs类实现能够根据窗体发送的信号切换显示内容。
Dialogs窗口中使用QStackedLayout来放置一组dialog窗口,接收到导航窗口发出 的信号后能够调出不同的dialog窗口。PesticideInformation类实现记录农药有害元素信 息的窗口,窗口记录农药材料源来源信息,Filed窗口记录种植基地信息,Factory窗口记 录生产加工信息,Selling窗口记录销售信息,consumption窗口记录消费信息。上述窗口 皆继承dialog类,dialog类能够将每一条溯源信息的摘要信息录入到以太坊私有链中,并 将详细溯源信息录入到数据库中。也就是说dialog类实现将窗口中的信息录入到溯源系统 的功能。Server.py使用web3.py与以太坊客户端通信,并与QT客户端的后台程序进行通 信,以实现在以太坊私有链中存储数据的功能。
Web3Conn用于与Server.py进行通信,privateChainConn继承Web3Conn,用于与以太坊私有链通信。dbConn类用于封装对数据库的操作。在原型系统中,利用mysql数据库 中会存储详细的溯源信息,数据库中的表使用key-value的形式,key为溯源信息的哈希值,value为详细溯源信息,两者都是用varchar类型来存储。
dart语句级单步调试器和分析器;运行命令行,终端进入flutter工程所在目录,执行flutter run命令运行app,运行的时候,在控制台可以看到一个Observatory URL(如http://127.0.0.1:8100/),通过浏览器打开,直接用语句级的单步调试程序连接到你的应用 程序。
使用IntelliJ IDEA,IDE内置调试器,运行的时候选择debug按钮debugger(),使用debugger() 语句插入编程式断点,调用这个方法需要import'dart:developer'。该debugger()语句带 有一个可选when参数,您可以指定该参数仅在特定条件为真时中断。
uestc_tlb_reader类用于读取存储在数据库中的农药有害元素离子信息privateChain 类能够将包括溯源信息哈希,溯源信息在数据库中的链接,上一条溯源信息的交易号的溯源 信息标签存储在以太坊私有链中,并将详细溯源信息存储在数据库中。
使用print()方法打印日志到控制台;使用flutter logs来查阅日志,这个命令基本上 是对adb logcat命令做了一层封装。如果打印日志过多,Android的做法是设置日志优先级 或者有时会丢弃一些日志行。为了避免这种情况,使用debugPrint()方法,这个方法是对 print()方法做了一层包装,将输出限制在一个级别,避免被Android内核丢弃。flutter框 架中的许多类都有有用的toString实现。按照惯例,这些输出通常包括runtimeType对象的 一行,通常在ClassName表格中。树中使用的某些类也具有从那一点返回整个子树的多行描 述的toStringDeep方法。有些详细实现了toString方法的类,有一个相应的只返回类型或 者对对象只有一两个词语简短描述的toStringShort方法。调试模式断言在开发过程中,强 烈建议您使用Flutter的“调试”模式,有时也称为“检查”模式。如果你使用flutter run 命令,调试模式是默认的。在这种模式下,Dart assert语句被启用,Flutter框架使用它来 执行许多运行时检查,验证赋值是否合法。当一个赋值不合法时,它会向控制台报告,并提 供一些上下文信息来帮助追踪问题的根源。要关闭调试模式并使用发布模式,请使用flutter run--release运行您的应用程序,这也关闭了Observatory调试器。我们也可用--profile 替代--release,一种关闭除了Observatory调试器之外的所有辅助工具的中间模式,也称为 “分析模式”。转储应用程序状态
Flutter框架的每一层都提供了将其当前状态转储到控制台(使debugPrint)的功能。 控件层我们可以使用debugDumpApp()转储Widgets库的状态
渲染层,如果尝试调试布局问题,那么控件层的树可能不够详细。在这种情况下,您可 以通过调用debugDumpRenderTree()转储渲染树;debugDumpApp()用法一样,除了布局或绘 画阶段之外,您可以随时调用它。约定俗成,我们最好在帧回调或事件处理时调用它。要调 用debugDumpRenderTree(),我们需要import'package:flutter/rendering.dart';上面示 例调用debugDumpRenderTree()
在原型系统中,使用在mysql数据库中存储一个键值对以记录一个产品的编号productID与存储该产品最后一条溯源信息交易编号transactionID的对应关系。privateChain类在进行溯源信息录入时会更改上述键值对。
具体的所述通过SDK获取数据制作参数前,所述销售者要跟合作的所述制造者进行谈判并 签订经济协议,而后要对谈判成功的合作的所述制造者进行规模评估、环境评估、必要技术 培训以及分配账户,之后合作的所述制造者才具有了农药溯源平台的操作权限;
在区块链的数据层和网络层方面可以对数据进行多点录入并对录入数据的人员进行身份 验证;在区块链的共识层和规则层对数据的公式和约定进行规则限定。
通过编译智能规则获得应用二进制接口ABI和字节码bytecode,ABI是账户和智能规 则间交互的接口,bytecode是EVM可以执行的字节码。账户使用bytecode作为交易的参数,广播创建规则交易。智能规则的执行同样以交易的形式存在。账户通过ABI接口获取规则,之后节点通过EVM虚拟机运行bytecode执行智能规则的代码逻辑,将运行的结果打包成交易存储于区块链中。账户address通过设置参数data和具体的方法function向规则账户发送交易。在使用私钥对交易进行签名,广播到网络中各节点。各节点EVM通过之前存储的bytecode执行相应的规则方法获取结果后写入区块链账本中。
使用ZXing来实现二维码(QR码)的编码解码过程,对二维码图像编码解码过程中用到的主 要函数说明如下:
a.MultiFormatWriter().encode(String contents,BarcodeFormat format,intwidth, int height):使用默认设置对图像进行编码;b.
MatrixToImageWriter.writeToFile(BitMatrix matrix,String format,Filefile): 将一个比特矩阵编码后写入文件;c.MultiFormatReader.decode(BinaryBitymapimage,
Map<DecodeHintType,?>hints):将二进制的图像文件按照指定的格式解码。
具体的,还包括:所述系统管理员会找到合作农户进行统一的农药回收,农药回收后的 加工、检疫、销售、物流等溯源信息也会被企业各个流程上的相应人员依照规定进行溯源信 息的录入保存,所述溯源信息的录入保存之后被SDK访问获取数据制作参数。
每个异步型处理溯源用户在Web上提供了JSON服务接口,由溯源用户对应的译码装置 提供,各个译码装置的对外服务描述由JSON文档表示,并在整合系统的中间层的注册中心 注册,使得多原链查询处理模块对译码装置请求时可以容易查找调用,同时,每当有新的溯 源用户添加到整合系统时,只需要新增一个译码装置并注册到中间层的译码装置注册中心即 可。
译码装置是数据整合系统中负责与溯源用户交互的组件,其任务包括将来自数据整合系 统上层的多原链查询发送给溯源用户,然后将结果转换成多原链查询处理器可以处理的格式;
译码装置接收HTTP消息传递过来的JSONiq子多原链查询语句,并对其进行分析转换 为对应溯源用户可以识别的多原链查询方式,同时将溯源用户的多原链查询结果统一为JSON 数据格式,每个溯源用户都有对应的译码装置;
译码装置主要由两个模块组成:多原链查询转换器和结果转换器。多原链查询转换器用 于将JSONiq子查询转换为本地溯源用户可识别的多原链查询语言,再由溯源用户执行多原 链查询操作,结果转换器是将溯源用户的多原链查询返回结果转换为JSON数据格式,保证 所有数据的格式统一性。
与任何分布式数据库的分片机制类似,NDPoS的分片机制基于DHT模式,根据分区键的散 列值进行切分。在这种模式下,指定分区键的精确查询操作性能极高,同时一般来说针对均 匀分布的分区键能够做到整个集群的数据均匀分布。但是,如果查询条件中并不包含分区键, 查询必须向所有分片中进行广播以得到全部分区中符合条件的记录。
因此,NDPoS所基于的DHT分片算法必须得到优化,以满足非主键查询检索的实时高效。 一个较为简单直观的方式即引入全局索引的概念。在分布式数据库的领域中,所谓全局索引 即一个二级索引,但是该索引的分区键使用索引键,而非表分区键。在这种模式中,用户可 以使用散列分区或范围分区对索引键字段进行分区,使查询者能够在仅访问有限数量分区的 前提下得到符合查询条件的记录。
具体的,还包括:所述Flutter界面使用自身的高性能Skia渲染引擎自绘,界面开发语言 使用dart,底层渲染引擎使用C,C++;所述Flutter界面界面设置采用树结构构建;
所述数据制作图层包括行政许可、公示公告、政策法规、禁限用农药、标准规范、行业 动态信息。
销售者、生产者登陆移动手持式终端后,系统首先判别登陆者的身份信息。若是销售者 账号登陆的系统,系统跳转模式选择页面,有入库模式和出库模式两种模式供选择。在入库 模式中,销售者扫描农药二维码,并点击确认按钮上传入库收集到的农药ID、销售者ID及 系统生成的入库时间至数据库中的销售者仓库表中;销售者出库模式中,人工扫描待出库的 品点击确认回显出库成功页面,出库相关的农药ID,销售者ID及系统生成的出库时间上传 至相关数据表。如若登陆者身份为生产者,则直接进入入库模式,扫码入库确认后入库相关 的农药ID、生产者ID和入库时间等信息上传至数据库中的生产者仓库表中。
该部分的信息采集者是各级销售者和生产者,信息采集的重要工具为二维码扫码器。扫 码器上运行的扫码程序使用java1.8语言开发,开发平台为Windows8.1,使用的IDE为 Idea2016。
具体的,对所述树结构进行布局,将布局拆分成基本的元素:找出行和列,并确定是否 有网格吗、有重叠的元素、需要选项卡,以及需要对齐、填充和边框的区域;
所述树结构采用线性布局,child分别是imageview和TextView;body部分采用一个Column 和ListView。所述树结构遵循MD设计,先写出根布局,把lake.jpg拷贝到工程的assets/images 目录下,并且在pubspec.yaml文件中修改
所述ListView能以列的形式展示数据。当内容超过渲染范围时,自动提供滚动的功能。 通过MainAxisAlignment.spaceEvenly平均的分配每个列占据的行空间
把子视图装进列表中,水平或竖直都可以,支持滑动,相比于Column,可选配置比较少, 但更易用并且支持滑动。
Flutter的布局一切都是widget,布局过程就是widget的组合,Flutter布局中需要清 楚的划分Row Column Stack ListView GridView等布局过程中的margin padding等可考虑 使用Container,对于有状态的Widget需要使用StatefulWidget子类来实现,对于同一布 局能用多种不同的widget来实现的,尽量使用轻量级的widget
具体的,还包括:所述在跨平台Flutter界面生成所述数据,为可以在ios平台和android 平台的Flutter界面生成所述数据。
可视化调试,你还可以通过设置debugPaintSizeEnabled为true来更直观的调试布局问 题,这是渲染库中的一个布尔变量,当该变量为true时,它可以随时生效,并且影响所有地 方的绘制。最简单的办法是在void main()主函数顶部入口去设置它。
当我们打开可视化调试时,所有子控件内边距会有一个明亮渐变的深蓝色边框,控件中 间显示一个黄色箭头,控件间距会显示灰色。
debugPaintBaselinesEnabled的功能类似于对象的基准线,字母基线显示亮绿色,表意 基线显示橙色。debugPaintPointersEnabled标志位会打开一种特殊模式,让所有的对象都 突出显示,这个可以帮助你发现哪一个对象不能正确的进行测试,比如,某个对象在其父类 的范围之外,就不会第一时间被考虑进行命中测试。
如果您尝试调试混合图层,例如,确定是否以及在何处添加RepaintBoundary控件,可 以使用debugPaintLayerBordersEnabled标志位,它使用橙色来绘制每个图层的边界,或者 用debugRepaintRainbowEnabled标志位,当图层重新绘制时,它将让图层显示旋转的色彩。 所有这些标志位只在调试模式下工作。一般来说,在Flutter框架中,任何以“debug…”开 头的变量或方法,都只能在调试模式下有效。
溯源信息能够通过打开网页进行查询,网页后台使用express框架,前端使用react库。 在前端网页中,会使用一个大小可变的表格来存储溯源信息。在原型系统中定义了:Filter, Row,Table,Inquire,List等类来渲染表格。List类是Filter,Table,Inquire父类, 在list类中定义了一个变量state(表示状态)state能够传递给子类Table。List中的 getData()函数能够向后端发起一个get请求,并利用返回的报文修改state的值,再让Table类修改后的state值重新进行渲染。
从有限状态自动机模型转化对应的图结构的本质是把FSM-维数组转化为一个无向 图G,其中无向图G的节点对应一维数组中每一项,而无向图G的边对应一维数组的children—项。转化中我们不区分五种模型,这是由于是一对一模型、一分多模型以 及多合一模型可以在溯源遍历中区分开;而分裂模型与异步模型、同步模型与简单合并模型 的区别,可以在数据库产品表中体现。此外,由于系统是基于流程图展开溯源查询的,此图 结构会经常被逆序遍历,本系统将图结构以key->valUe的形式缓存在Memca ched中。
Table类能够利用List传递的state信息生成一个Row的数组,并利用该数组渲染一 个表格。
Inquire类用实现一个表单按键,点击后会会触发handleSubmit()方法,该方法会触发 父类中的getdata()函数从而渲染完整表格。Filter类用于在html页面上渲染一些文字 信息。
调试动画最简单的方法是减慢它们的速度。为此,将timeDilation变量(在scheduler 库中)设置为大于1.0的数字,例如50.0。最好在应用程序启动时只设置一次。如果您在运 行中更改它,尤其是在动画运行时将其值变小,则框架可能会观察到时间倒退,这可能会导 致断言,并且通常会影响效果。
要知道导致你应用程序重新布局或重新绘制的原因,您可以分别设置debugPrintMarkNeedsLayoutStacks和debugPrintMarkNeedsPaintStacks标志。
每当渲染框被要求重新布局和重新绘制时,都会随时将堆栈跟踪日志打印到控制台。如 果这种方法对你有用,你可以使用services库中的debugPrintStack()方法按需打印自己的 堆栈跟踪日志。测试应用程序启动时间,踪日志被保存在你的Flutter工程build目录下一 个叫start_up_info.json的json文件里。日志会列出从应用启动到这些以微秒捕获的跟踪 事件所用的时间:进入Flutter引擎代码的时间绘制应用第一帧的时间初始化Flutter框架 的时间完成Flutter框架初始化的时间。
使用的数据库是MySql,要想实现数据库与服务器的连接,必须加载本软件的专用驱动, 本设计中需要添加的驱动为mysql-connector-java-5.1.7-bin.jar。需要先在软件中通过关 键语句<property name="driverClass">com.mysql.jdbc.Driver</property>来配置数据库 驱动程序,并指定JDBC连接数据库地址jdbc:mysql://localhost:3306/sensors_info,而 数据库名称为Sensors_Info,实现数据库与服务器连接的方法是:C3P0连接池与数据库连 接。通过关键语句private static DataSource dataSource=newComboPooledDataSource();private static ThreadLocal<Connection>tl=newThreadLocal<Connection>();直接获取一个连接池,并通过关键方法GetConnection()实现服务器与数据库的连接。当数据库连接成功后通过CommitAndRelease()函数提交,关闭资 源以及从ThreadLocall中释放,使得资源得到最大化的利用。
如图2,本发明所涉及的一种基于Flutter的跨平台数据制作装置的模块结构图;发明 还请求保护一种基于Flutter的跨平台数据制作装置,用于区块链农药溯源,其特征在于, 包括:获取单元,用于通过SDK获取数据制作参数,所述数据制作参数包括基础类参数和个 性化参数;第一生成单元,用于基于所述参数,生成承载所述参数的数据制作图层;第二生 成单元,用于根据所述数据制作图层,在Flutter界面生成所述数据。
如图3,本发明所涉及的一种基于Flutter的跨平台数据制作装置的系统结构图,所述数 据制作图层包括行政许可、公示公告、政策法规、禁限用农药、标准规范、行业动态信息; 本发明还请求保护一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程 序被处理器执行时实现如上述的方法。本发明还请求保护一种电子设备,其特征在于,包括: 一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一 个或多个处理器执行时,使得所述一个或多个处理器实现如上述的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原 则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于Flutter的跨平台数据制作方法,用于区块链农药溯源,其特征在于,包括:通过SDK获取数据制作参数,所述数据制作参数包括基础类参数和个性化参数;基于所述参数,生成承载所述参数的数据制作图层;根据所述数据制作图层,在Flutter界面生成所述数据。
2.如权利要求1所述的一种基于Flutter的跨平台数据制作方法,其特征在于,所述基础类参数包括:宽度、高度、XY坐标、旋转和值的参数;所述个性化参数包括:文字图层参数、图片图层参数和二维码图层参数。
3.如权利要求2所述的一种基于Flutter的跨平台数据制作方法,其特征在于,所述基于所述参数,生成承载所述参数的数据制作图层,包括:基于所述参数,生成承载所述参数的文字图层、图片图层和/或二维码图层。
4.如权利要求1所述的一种基于Flutter的跨平台数据制作方法,其特征在于,所述通过SDK获取数据制作参数,所述数据制作参数包括基础类参数和个性化参数,之后还包括:解析所述数据制作参数,生成解析的JSON数据。
5.如权利要求3所述的一种基于Flutter的跨平台数据制作方法,其特征在于,所述根据所述数据制作图层,在Flutter界面生成所述数据,包括:通过Flutter组件调整所述数据制作图层的顺序、时间和/或逻辑;根据调整顺序、时间和/或逻辑后的图层在Flutter界面生成所述数据。
6.如权利要求2所述的一种基于Flutter的跨平台数据制作方法,其特征在于,所述文字图层参数包括:字体类型、字体粗细、字体大小、字体颜色、点击、行间距以及文本属性;和/或,所述图片图层参数包括:圆角以及对齐缩放;和/或,所述二维码图层参数包括:图标宽度、图标高度、图标路径、留白距离以及美化随机颜色。
7.如权利要求1所述的一种基于Flutter的跨平台数据制作方法,其特征在于,还包括:保存或显示所述生成的数据;所述区块链农药溯源包括5类用户,所述5类用户为消费者、制造者、监管者、销售者、系统管理员;
所述通过SDK获取数据制作参数前,所述销售者要跟合作的所述制造者进行谈判并签订经济协议,而后要对谈判成功的合作的所述制造者进行规模评估、环境评估、必要技术培训以及分配账户,之后合作的所述制造者才具有了农药溯源平台的操作权限;
在区块链的数据层和网络层方面可以对数据进行多点录入并对录入数据的人员进行身份验证;在区块链的共识层和规则层对数据的公式和约定进行规则限定。
8.如权利要求1所述的一种基于Flutter的跨平台数据制作方法,其特征在于,还包括:所述系统管理员会找到合作农户进行统一的农药回收,农药回收后的加工、检疫、销售、物流等溯源信息也会被企业各个流程上的相应人员依照规定进行溯源信息的录入保存,所述溯源信息的录入保存之后被SDK访问获取数据制作参数;
所述Flutter界面使用自身的高性能Skia渲染引擎自绘,界面开发语言使用dart,底层渲染引擎使用C,C++;所述Flutter界面界面设置采用树结构构建;
所述数据制作图层包括行政许可、公示公告、政策法规、禁限用农药、标准规范、行业动态信息。
9.一种基于Flutter的跨平台数据制作装置,用于区块链农药溯源,其特征在于,包括:获取单元,用于通过SDK获取数据制作参数,所述数据制作参数包括基础类参数和个性化参数;第一生成单元,用于基于所述参数,生成承载所述参数的数据制作图层;第二生成单元,用于根据所述数据制作图层,在Flutter界面生成所述数据。
10.一种电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010787567.3A CN112131300A (zh) | 2020-08-07 | 2020-08-07 | 一种基于Flutter的跨平台数据制作方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010787567.3A CN112131300A (zh) | 2020-08-07 | 2020-08-07 | 一种基于Flutter的跨平台数据制作方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112131300A true CN112131300A (zh) | 2020-12-25 |
Family
ID=73850245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010787567.3A Pending CN112131300A (zh) | 2020-08-07 | 2020-08-07 | 一种基于Flutter的跨平台数据制作方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112131300A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485778A (zh) * | 2021-06-25 | 2021-10-08 | 青岛海尔科技有限公司 | 页面数据的处理方法、装置、存储介质和电子装置 |
CN115640010A (zh) * | 2022-12-23 | 2023-01-24 | 北京沃德博创信息科技有限公司 | Flutter中无限循环滚动的列表组件 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130198611A1 (en) * | 2012-01-31 | 2013-08-01 | Oracle International Corporation | Method and system for implementing a common data interface to web services |
CN110766772A (zh) * | 2019-09-10 | 2020-02-07 | 北京字节跳动网络技术有限公司 | 基于Flutter跨平台海报制作方法装置介质和设备 |
CN110880118A (zh) * | 2019-11-26 | 2020-03-13 | 徐州斯塬网络科技有限公司 | 一种基于区块链的优质农产品的保障方法 |
-
2020
- 2020-08-07 CN CN202010787567.3A patent/CN112131300A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130198611A1 (en) * | 2012-01-31 | 2013-08-01 | Oracle International Corporation | Method and system for implementing a common data interface to web services |
CN110766772A (zh) * | 2019-09-10 | 2020-02-07 | 北京字节跳动网络技术有限公司 | 基于Flutter跨平台海报制作方法装置介质和设备 |
CN110880118A (zh) * | 2019-11-26 | 2020-03-13 | 徐州斯塬网络科技有限公司 | 一种基于区块链的优质农产品的保障方法 |
Non-Patent Citations (1)
Title |
---|
路伟康 等: "农药监管服务平台的设计与实现", 贵州农业科学, vol. 44, no. 4, pages 171 - 174 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485778A (zh) * | 2021-06-25 | 2021-10-08 | 青岛海尔科技有限公司 | 页面数据的处理方法、装置、存储介质和电子装置 |
CN113485778B (zh) * | 2021-06-25 | 2023-06-13 | 青岛海尔科技有限公司 | 页面数据的处理方法、装置、存储介质和电子装置 |
CN115640010A (zh) * | 2022-12-23 | 2023-01-24 | 北京沃德博创信息科技有限公司 | Flutter中无限循环滚动的列表组件 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108363602B (zh) | 智能ui界面布局方法、装置、终端设备及存储介质 | |
US20180309807A1 (en) | Apparatus and Method for Acquiring, Managing, Sharing, Monitoring, Analyzing and Publishing Web-Based Time Series Data | |
US20170075973A1 (en) | Automatic Synthesis and Presentation of OLAP Cubes from Semantically Enriched Data Sources | |
JP6036100B2 (ja) | ウェブ・ブラウザー画面の段階的な視覚的比較 | |
US20150095841A1 (en) | Systems and methods for composable analytics | |
US20130283141A1 (en) | Client Agnostic Spatial Workflow Form Definition and Rendering | |
US20130166602A1 (en) | Cloud-enabled business object modeling | |
CN106776939A (zh) | 一种图像无损标注方法及系统 | |
US9262550B2 (en) | Processing semi-structured data | |
CN112131300A (zh) | 一种基于Flutter的跨平台数据制作方法和装置 | |
CN107679141A (zh) | 数据入库方法、装置、设备及计算机可读存储介质 | |
US10210001B2 (en) | Automatic execution of objects in a user interface | |
CN110443880A (zh) | 图像渲染方法、装置、存储介质及电子设备 | |
US9984125B1 (en) | Apparatus and method for acquiring, managing, sharing, monitoring, analyzing and publishing web-based time series data | |
CN113516729A (zh) | 一种图表绘制方法、装置及计算机可读存储介质 | |
CN109670011B (zh) | 一种多图源地图服务引擎 | |
CN115062084B (zh) | 基于数据库元数据构建api接口方法及装置 | |
US20130163028A1 (en) | Accessing current data by using code images | |
McFerren et al. | FOSS geospatial libraries in scientific workflow environments: experiences and directions | |
Sons et al. | xml3d. js: Architecture of a Polyfill Implementation of XML3D | |
Shen et al. | A Catalogue Service for Internet GIS ervices Supporting Active Service Evaluation and Real‐Time Quality Monitoring | |
Gu et al. | Design and implementation of digital assets management system based on WeChat | |
US9128908B2 (en) | Converting reports between disparate report formats | |
Barker et al. | Pro data visualization using R and JavaScript | |
US11487728B2 (en) | Unified-person record having periodic table of relationships |
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 |