0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

探索设计稿自动生成Flutter代码的技术方案

京东云 来源:京东物流 冷先锋 作者:京东物流 冷先锋 2024-11-08 10:09 次阅读

作者:京东物流 冷先锋

近年来,随着人工智能和大模型技术的发展,设计稿(UI视图)自动生成代码的技术也在不断进步。本文将探讨几家知名企业在这一领域的探索和实践,包括美团、京东、微软等,以及一些常见的工具和方法,最后尝试大模型生成flutter代码在项目中的实践。

一、美团的探索

美团在2021年3月25日发表了一篇关于设计稿自动生成代码的文章,探讨了sketch2json和imgCook两种技术方案。sketch2json通过解析Sketch源文件中的图层信息,转化成DSL并生成代码,而imgCook则基于AI技术来实现这一过程。尽管当时大模型技术尚未成熟,sketch2json的生成算法较为简单粗暴,复杂层布局的准确率较低且可解释性不高,难以持续优化。

原文:设计稿(UI视图)自动生成代码方案的探索

二、咸鱼的UI2CODE的设计思路

咸鱼将整个工程结构分为五个部分,其中四块内容核心处理机器视觉的问题,通过机器学习将它们链接起来。代码的线上发布是非常严格的事情,而机器学习属于概率学解法,很难达到我们要求的精度,所以我们选择以机器视觉理解为主,机器学习为辅的方式,构建整个UI2CODE工程体系。

原文: UI2CODE智能生成Flutter代码——整体设计篇

三、微软的Sketch2Code

微软也曾推出过一个类似的项目,名为Sketch2Code。这个项目的目标是通过识别草图生成网页代码。虽然这项技术在形式上较为新颖,但其背后依然依赖于大量的研究工作。微软强调,通过草图生成代码并不意味着AI可以通过任意图像生成复杂逻辑的代码。在实际开发中,产品经理等角色需要将需求转化为设计,再由工程师通过代码实现。GPT-4等大模型目前只能在从设计到代码生成的环节提供辅助,而在需求理解和设计阶段仍需人工介入。

wKgZomctcseAA-Q0AAG7vdjIks8352.png



除了上述企业的探索,还有一些工具和方法可以帮助设计师和开发人员将设计稿转化为代码:

1.Uizard:可以将手绘草图和设计图像转换为数字原型和代码,支持HTML/CSS代码生成。

2.Adobe XD + Plugins:通过插件(如"Export Kit"或"Anima")将设计稿导出为HTML、CSS和JavaScript代码。

3.Figma + Plugins:类似于Adobe XD,通过插件(如"HTML Generator"或"Figma to Code")将设计稿转换为代码。

4.Zeplin:设计师可以将设计稿上传到Zeplin,开发人员可以从中提取CSS代码和设计规范。

5.Avocode:支持将Sketch、XD、Photoshop等设计稿转换为代码,自动生成HTML和CSS代码。

6.Sketch2React:将Sketch设计稿转换为React组件。

7.CodeMyUI:提供大量UI设计和代码示例,供设计师和开发人员参考。

四、Flutter代码生成工具

将设计稿直接转换为Flutter代码是一项复杂的任务,但以下工具可以显著简化工作流:

1.Supernova:支持从Sketch、Adobe XD、Figma导出Flutter代码。

2.Flutter Studio:在线工具,可以将设计转换为Flutter代码。

3.Parabeac:开源工具,支持从Sketch、Figma转换为Flutter代码。

4.Figma to Flutter:Figma插件,可以将设计稿转换为Flutter代码。

5.Adobe XD to Flutter:Adobe XD插件,可以将设计稿导出为Flutter代码。

6.Sketch2Flutter:将Sketch设计稿转换为Flutter代码。

7.Draftbit:低代码平台,支持从设计到Flutter代码的转换。

这些工具通常需要经过以下步骤:

1.设计阶段:在设计工具中创建设计稿。

2.导出设计:使用相应的插件或工具导出设计稿。

3.生成代码:导出的设计稿自动转换为代码。

4.手动调整:根据需要手动调整生成的代码。



五、京东的Ling平台

京东的Ling平台可以根据设计稿生成H5代码和Android布局代码,但目前尚无法生成Flutter代码。该平台的主要目标是简化开发流程,提高开发效率。

wKgaomctcsqAOAfGAB0nFv8NXFU884.png

羚珑平台

六、大模型生成flutter探索和经验总结

1、尝试用历史的UI设计图生成,下图是把UI设计图导入到ling平台,可以生产web前端代码。

wKgZomctcsyAGJcwAACqgp9ysIw095.png

wKgaomctcs6AJtefABBOSMyWq_w189.png

2、把前端WEB代码输入到大模型,让生成flutter代码,然后运行效果如下:



wKgZomctctCAad89AARvyRJfMxI088.png

发现整体UI都正式出来,所有元素都能展示出来,字体和颜色还原度很高,就是位置偏差比较大。分析认为,设计图画的层次结构比较自由,没有结构化,大模型不能很高理解位置和层级关系。

3、原型设计图结构化和组件化

把这个想法和UI设计师沟通后,在新的项目中,尝试结构化UI设计图,按照顺序编排元素的位置,并且组件化。派送引导式作业的组件化化的设计图如下:

wKgaomctctGAKjn4AAEgnPrKvBI428.png wKgZomctctKAddy2AAa2MotZfTo531.png



组件一:头部卡片



wKgaomctctOAEMLLAAC2zEPmxxY199.png wKgZomctctSAAWNPAACoPmhFDCI484.png





组件二:运单卡片



wKgaomctctWACsc9AADNMiINDaA228.png wKgZomctctaAYwZEAADh18sTMV8407.png



小结

设计稿的组件在羚珑平台( https://ling.jd.com)生成web前端代码,然后拿生成的web前端代码输入到大模型,直接告诉大模型生成flutter代码。上图组件一和组件二,左边是设计稿,右边是大模型输入在项目运行的效果,还原效果比未结构化的情况,大模型理解翻译的提高90%,基本可以用于日常项目中,对设计师的画图有一定要求,这个时间投入,可以让研发节省更多的时间。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4720

    浏览量

    68212
  • flutter
    +关注

    关注

    0

    文章

    13

    浏览量

    432
  • 大模型
    +关注

    关注

    2

    文章

    2271

    浏览量

    2346
收藏 人收藏

    评论

    相关推荐

    鸿蒙Flutter实战:07混合开发

    参考资料 撰写双端平台代码(插件编写实现) 鸿蒙Flutter功能开发 鸿蒙add-to-app示例 如何使用混合开发 module 【flutter鸿蒙技术交流】 目前
    发表于 10-23 16:00

    鸿蒙Flutter实战:08-如何调试代码

    # 鸿蒙Flutter实战:如何调试代码 ## 1.环境搭建 参考文章[鸿蒙Flutter实战:01-搭建开发环境](https://gitee.com/zacks
    发表于 10-23 16:29

    鸿蒙Flutter实战:09-现有Flutter项目支持鸿蒙

    添加依赖项,首先添加纯dart编写的包,再添加依赖于原生代码/插件的包。注意挨个添加依赖,不要一次添加太多依赖,方便排查定位问题, 解决版本依赖问题,鸿蒙Flutter项目目前需要依赖于3.7版本
    发表于 10-23 16:36

    鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0

    ,将会在项目目录中创建 .fvm 目录,里面 flutter_sdk 会软连接到实际的 custom_3.22.0 SDK 目录。 查看 .vscode/settings.json 文件可以发现,自动
    发表于 11-01 15:03

    代码自动生成工具,支持独立MCU方案、SOC方案

    成功后点击“应用”3.生成目标平台代码注:如果之前没有定义数据点则无法使用自动生成代码服务。3.1 生成
    发表于 12-20 16:25

    深入理解flutter的编译原理与优化

    dart代码构建链路如下所示:其中gen_snapshot是dart编译器,采用了tree shaking(类似依赖树逻辑,可生成最小包,也因而在Flutter中禁止了dart支持的反射特性)等
    发表于 07-02 17:47

    基于模型设计的HDL代码自动生成技术综述

    ,开发舰载海空搜索雷达核心信号处理子系统,完成系统级的仿真,自动生成75,000多行HDL代码,节省了两个工程师人年,该雷达系统最后完成了探索性的海上试验。 2)美国的红外热成像
    发表于 06-08 09:29

    RTthread移植代码自动生成方案

    自动生成,如何生成可参考右边的帮助文档文章目录前言一、RTthread移植代码自动生成方案二、使
    发表于 02-11 06:29

    CRC校验代码自动生成工具

    CRC校验代码自动生成工具根据输入条件自动产生各种CRC的VHDL或verilog源程序
    发表于 05-20 11:16 294次下载
    CRC校验<b class='flag-5'>代码</b><b class='flag-5'>自动</b><b class='flag-5'>生成</b>工具

    基于量子框架的代码自动生成技术研究

    基于量子框架的代码自动生成技术研究:摘要:量子框架是基于有限状态机理论,完整的嵌入式系统实现技术,用以设计能与任何RTOS 一起工作的活动对
    发表于 05-16 22:35 22次下载

    STM32库函数代码自动生成器正式版

    STM32库函数代码自动生成器正式版 STM32库函数代码自动生成器正式版
    发表于 07-25 18:52 0次下载

    c语言代码自动生成工具,MCU代码自动生成工具介绍

    MCU代码自动生成工具介绍文档编辑原标题:GoKit3二次开发-代码自动生成工具介绍前文需知1.
    发表于 10-28 17:36 8次下载
    c语言<b class='flag-5'>代码</b><b class='flag-5'>自动</b><b class='flag-5'>生成</b>工具,MCU<b class='flag-5'>代码</b><b class='flag-5'>自动</b><b class='flag-5'>生成</b>工具介绍

    Flutter 共创未来 | Flutter Forward 活动精彩回顾

    Flutter 的愿景。Flutter Forward 是在肯尼亚内罗毕以线上直播方式举行的开发者活动,世界各地的开发者能够亲自参与或者远程相聚,探索 Flutter 的未来发展方
    的头像 发表于 02-22 23:20 551次阅读

    Flutter热更新技术探索

    更新需求已经比较成熟,但 Flutter 技术栈目前还缺少类似的技术方案,因此 Flutter 研发团队,也需要类似的热更新
    的头像 发表于 06-08 14:31 958次阅读
    <b class='flag-5'>Flutter</b>热更新<b class='flag-5'>技术</b><b class='flag-5'>探索</b>

    如何自动生成verilog代码

    介绍几种自动生成verilog代码的方法。
    的头像 发表于 11-05 11:45 121次阅读
    如何<b class='flag-5'>自动</b><b class='flag-5'>生成</b>verilog<b class='flag-5'>代码</b>