0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探索設(shè)計(jì)稿自動(dòng)生成Flutter代碼的技術(shù)方案

京東云 ? 來源:京東物流 冷先鋒 ? 作者:京東物流 冷先鋒 ? 2024-11-08 10:09 ? 次閱讀

作者:京東物流 冷先鋒

近年來,隨著人工智能和大模型技術(shù)的發(fā)展,設(shè)計(jì)稿(UI視圖)自動(dòng)生成代碼的技術(shù)也在不斷進(jìn)步。本文將探討幾家知名企業(yè)在這一領(lǐng)域的探索和實(shí)踐,包括美團(tuán)、京東、微軟等,以及一些常見的工具和方法,最后嘗試大模型生成flutter代碼在項(xiàng)目中的實(shí)踐。

一、美團(tuán)的探索

美團(tuán)在2021年3月25日發(fā)表了一篇關(guān)于設(shè)計(jì)稿自動(dòng)生成代碼的文章,探討了sketch2json和imgCook兩種技術(shù)方案。sketch2json通過解析Sketch源文件中的圖層信息,轉(zhuǎn)化成DSL并生成代碼,而imgCook則基于AI技術(shù)來實(shí)現(xiàn)這一過程。盡管當(dāng)時(shí)大模型技術(shù)尚未成熟,sketch2json的生成算法較為簡(jiǎn)單粗暴,復(fù)雜層布局的準(zhǔn)確率較低且可解釋性不高,難以持續(xù)優(yōu)化。

原文:設(shè)計(jì)稿(UI視圖)自動(dòng)生成代碼方案的探索?

二、咸魚的UI2CODE的設(shè)計(jì)思路

咸魚將整個(gè)工程結(jié)構(gòu)分為五個(gè)部分,其中四塊內(nèi)容核心處理機(jī)器視覺的問題,通過機(jī)器學(xué)習(xí)將它們鏈接起來。代碼的線上發(fā)布是非常嚴(yán)格的事情,而機(jī)器學(xué)習(xí)屬于概率學(xué)解法,很難達(dá)到我們要求的精度,所以我們選擇以機(jī)器視覺理解為主,機(jī)器學(xué)習(xí)為輔的方式,構(gòu)建整個(gè)UI2CODE工程體系。

原文: UI2CODE智能生成Flutter代碼——整體設(shè)計(jì)篇?

三、微軟的Sketch2Code

微軟也曾推出過一個(gè)類似的項(xiàng)目,名為Sketch2Code。這個(gè)項(xiàng)目的目標(biāo)是通過識(shí)別草圖生成網(wǎng)頁代碼。雖然這項(xiàng)技術(shù)在形式上較為新穎,但其背后依然依賴于大量的研究工作。微軟強(qiáng)調(diào),通過草圖生成代碼并不意味著AI可以通過任意圖像生成復(fù)雜邏輯的代碼。在實(shí)際開發(fā)中,產(chǎn)品經(jīng)理等角色需要將需求轉(zhuǎn)化為設(shè)計(jì),再由工程師通過代碼實(shí)現(xiàn)。GPT-4等大模型目前只能在從設(shè)計(jì)到代碼生成的環(huán)節(jié)提供輔助,而在需求理解和設(shè)計(jì)階段仍需人工介入。

wKgZomctcseAA-Q0AAG7vdjIks8352.png

?

除了上述企業(yè)的探索,還有一些工具和方法可以幫助設(shè)計(jì)師和開發(fā)人員將設(shè)計(jì)稿轉(zhuǎn)化為代碼:

1.Uizard:可以將手繪草圖和設(shè)計(jì)圖像轉(zhuǎn)換為數(shù)字原型和代碼,支持HTML/CSS代碼生成。

2.Adobe XD + Plugins:通過插件(如"Export Kit"或"Anima")將設(shè)計(jì)稿導(dǎo)出為HTML、CSS和JavaScript代碼。

3.Figma + Plugins:類似于Adobe XD,通過插件(如"HTML Generator"或"Figma to Code")將設(shè)計(jì)稿轉(zhuǎn)換為代碼。

4.Zeplin:設(shè)計(jì)師可以將設(shè)計(jì)稿上傳到Zeplin,開發(fā)人員可以從中提取CSS代碼和設(shè)計(jì)規(guī)范。

5.Avocode:支持將Sketch、XD、Photoshop等設(shè)計(jì)稿轉(zhuǎn)換為代碼,自動(dòng)生成HTML和CSS代碼。

6.Sketch2React:將Sketch設(shè)計(jì)稿轉(zhuǎn)換為React組件。

7.CodeMyUI:提供大量UI設(shè)計(jì)和代碼示例,供設(shè)計(jì)師和開發(fā)人員參考。

四、Flutter代碼生成工具

將設(shè)計(jì)稿直接轉(zhuǎn)換為Flutter代碼是一項(xiàng)復(fù)雜的任務(wù),但以下工具可以顯著簡(jiǎn)化工作流:

1.Supernova:支持從Sketch、Adobe XD、Figma導(dǎo)出Flutter代碼。

2.Flutter Studio:在線工具,可以將設(shè)計(jì)轉(zhuǎn)換為Flutter代碼。

3.Parabeac:開源工具,支持從Sketch、Figma轉(zhuǎn)換為Flutter代碼。

4.Figma to Flutter:Figma插件,可以將設(shè)計(jì)稿轉(zhuǎn)換為Flutter代碼。

5.Adobe XD to Flutter:Adobe XD插件,可以將設(shè)計(jì)稿導(dǎo)出為Flutter代碼。

6.Sketch2Flutter:將Sketch設(shè)計(jì)稿轉(zhuǎn)換為Flutter代碼。

7.Draftbit:低代碼平臺(tái),支持從設(shè)計(jì)到Flutter代碼的轉(zhuǎn)換。

這些工具通常需要經(jīng)過以下步驟:

1.設(shè)計(jì)階段:在設(shè)計(jì)工具中創(chuàng)建設(shè)計(jì)稿。

2.導(dǎo)出設(shè)計(jì):使用相應(yīng)的插件或工具導(dǎo)出設(shè)計(jì)稿。

3.生成代碼:導(dǎo)出的設(shè)計(jì)稿自動(dòng)轉(zhuǎn)換為代碼。

4.手動(dòng)調(diào)整:根據(jù)需要手動(dòng)調(diào)整生成的代碼。

?

五、京東的Ling平臺(tái)

京東的Ling平臺(tái)可以根據(jù)設(shè)計(jì)稿生成H5代碼和Android布局代碼,但目前尚無法生成Flutter代碼。該平臺(tái)的主要目標(biāo)是簡(jiǎn)化開發(fā)流程,提高開發(fā)效率。

wKgaomctcsqAOAfGAB0nFv8NXFU884.png

?羚瓏平臺(tái)?

六、大模型生成flutter探索和經(jīng)驗(yàn)總結(jié)

1、嘗試用歷史的UI設(shè)計(jì)圖生成,下圖是把UI設(shè)計(jì)圖導(dǎo)入到ling平臺(tái),可以生產(chǎn)web前端代碼。

wKgZomctcsyAGJcwAACqgp9ysIw095.png

wKgaomctcs6AJtefABBOSMyWq_w189.png

2、把前端WEB代碼輸入到大模型,讓生成flutter代碼,然后運(yùn)行效果如下:

?

wKgZomctctCAad89AARvyRJfMxI088.png

發(fā)現(xiàn)整體UI都正式出來,所有元素都能展示出來,字體和顏色還原度很高,就是位置偏差比較大。分析認(rèn)為,設(shè)計(jì)圖畫的層次結(jié)構(gòu)比較自由,沒有結(jié)構(gòu)化,大模型不能很高理解位置和層級(jí)關(guān)系。

3、原型設(shè)計(jì)圖結(jié)構(gòu)化和組件化

把這個(gè)想法和UI設(shè)計(jì)師溝通后,在新的項(xiàng)目中,嘗試結(jié)構(gòu)化UI設(shè)計(jì)圖,按照順序編排元素的位置,并且組件化。派送引導(dǎo)式作業(yè)的組件化化的設(shè)計(jì)圖如下:

wKgaomctctGAKjn4AAEgnPrKvBI428.png wKgZomctctKAddy2AAa2MotZfTo531.png

?

組件一:頭部卡片

?

wKgaomctctOAEMLLAAC2zEPmxxY199.png wKgZomctctSAAWNPAACoPmhFDCI484.png

?

?

組件二:運(yùn)單卡片

?

wKgaomctctWACsc9AADNMiINDaA228.png wKgZomctctaAYwZEAADh18sTMV8407.png

?

小結(jié)

設(shè)計(jì)稿的組件在羚瓏平臺(tái)( https://ling.jd.com)生成web前端代碼,然后拿生成的web前端代碼輸入到大模型,直接告訴大模型生成flutter代碼。上圖組件一和組件二,左邊是設(shè)計(jì)稿,右邊是大模型輸入在項(xiàng)目運(yùn)行的效果,還原效果比未結(jié)構(gòu)化的情況,大模型理解翻譯的提高90%,基本可以用于日常項(xiàng)目中,對(duì)設(shè)計(jì)師的畫圖有一定要求,這個(gè)時(shí)間投入,可以讓研發(fā)節(jié)省更多的時(shí)間。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68603
  • flutter
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    441
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2448

    瀏覽量

    2701
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙Flutter實(shí)戰(zhàn):07混合開發(fā)

    參考資料 撰寫雙端平臺(tái)代碼(插件編寫實(shí)現(xiàn)) 鴻蒙Flutter功能開發(fā) 鴻蒙add-to-app示例 如何使用混合開發(fā) module 【flutter鴻蒙技術(shù)交流】 目前
    發(fā)表于 10-23 16:00

    鴻蒙Flutter實(shí)戰(zhàn):08-如何調(diào)試代碼

    # 鴻蒙Flutter實(shí)戰(zhàn):如何調(diào)試代碼 ## 1.環(huán)境搭建 參考文章[鴻蒙Flutter實(shí)戰(zhàn):01-搭建開發(fā)環(huán)境](https://gitee.com/zacks
    發(fā)表于 10-23 16:29

    鴻蒙Flutter實(shí)戰(zhàn):11-使用 Flutter SDK 3.22.0

    ,將會(huì)在項(xiàng)目目錄中創(chuàng)建 .fvm 目錄,里面 flutter_sdk 會(huì)軟連接到實(shí)際的 custom_3.22.0 SDK 目錄。 查看 .vscode/settings.json 文件可以發(fā)現(xiàn),自動(dòng)
    發(fā)表于 11-01 15:03

    代碼自動(dòng)生成工具,支持獨(dú)立MCU方案、SOC方案

    成功后點(diǎn)擊“應(yīng)用”3.生成目標(biāo)平臺(tái)代碼注:如果之前沒有定義數(shù)據(jù)點(diǎn)則無法使用自動(dòng)生成代碼服務(wù)。3.1 生成
    發(fā)表于 12-20 16:25

    深入理解flutter的編譯原理與優(yōu)化

    dart代碼構(gòu)建鏈路如下所示:其中g(shù)en_snapshot是dart編譯器,采用了tree shaking(類似依賴樹邏輯,可生成最小包,也因而在Flutter中禁止了dart支持的反射特性)等
    發(fā)表于 07-02 17:47

    基于模型設(shè)計(jì)的HDL代碼自動(dòng)生成技術(shù)綜述

    ,開發(fā)艦載海空搜索雷達(dá)核心信號(hào)處理子系統(tǒng),完成系統(tǒng)級(jí)的仿真,自動(dòng)生成75,000多行HDL代碼,節(jié)省了兩個(gè)工程師人年,該雷達(dá)系統(tǒng)最后完成了探索性的海上試驗(yàn)。 2)美國(guó)的紅外熱成像
    發(fā)表于 06-08 09:29

    什么是代碼自動(dòng)生成工具

    MCU代碼自動(dòng)生成工具介紹文檔編輯原標(biāo)題:GoKit3二次開發(fā)-代碼自動(dòng)生成工具介紹前文需知1.
    發(fā)表于 11-03 06:04

    RTthread移植代碼自動(dòng)生成方案

    自動(dòng)生成,如何生成可參考右邊的幫助文檔文章目錄前言一、RTthread移植代碼自動(dòng)生成方案二、使
    發(fā)表于 02-11 06:29

    CRC校驗(yàn)代碼自動(dòng)生成工具

    CRC校驗(yàn)代碼自動(dòng)生成工具根據(jù)輸入條件自動(dòng)產(chǎn)生各種CRC的VHDL或verilog源程序
    發(fā)表于 05-20 11:16 ?294次下載
    CRC校驗(yàn)<b class='flag-5'>代碼</b><b class='flag-5'>自動(dòng)</b><b class='flag-5'>生成</b>工具

    基于量子框架的代碼自動(dòng)生成技術(shù)研究

    基于量子框架的代碼自動(dòng)生成技術(shù)研究:摘要:量子框架是基于有限狀態(tài)機(jī)理論,完整的嵌入式系統(tǒng)實(shí)現(xiàn)技術(shù),用以設(shè)計(jì)能與任何RTOS 一起工作的活動(dòng)對(duì)
    發(fā)表于 05-16 22:35 ?22次下載

    STM32庫函數(shù)代碼自動(dòng)生成器正式版

    STM32庫函數(shù)代碼自動(dòng)生成器正式版 STM32庫函數(shù)代碼自動(dòng)生成器正式版
    發(fā)表于 07-25 18:52 ?0次下載

    c語言代碼自動(dòng)生成工具,MCU代碼自動(dòng)生成工具介紹

    MCU代碼自動(dòng)生成工具介紹文檔編輯原標(biāo)題:GoKit3二次開發(fā)-代碼自動(dòng)生成工具介紹前文需知1.
    發(fā)表于 10-28 17:36 ?8次下載
    c語言<b class='flag-5'>代碼</b><b class='flag-5'>自動(dòng)</b><b class='flag-5'>生成</b>工具,MCU<b class='flag-5'>代碼</b><b class='flag-5'>自動(dòng)</b><b class='flag-5'>生成</b>工具介紹

    Flutter 共創(chuàng)未來 | Flutter Forward 活動(dòng)精彩回顧

    對(duì) Flutter 的愿景。Flutter Forward 是在肯尼亞內(nèi)羅畢以線上直播方式舉行的開發(fā)者活動(dòng),世界各地的開發(fā)者能夠親自參與或者遠(yuǎn)程相聚,探索 Flutter 的未來發(fā)展方
    的頭像 發(fā)表于 02-22 23:20 ?597次閱讀

    Flutter熱更新技術(shù)探索

    更新需求已經(jīng)比較成熟,但 Flutter 技術(shù)棧目前還缺少類似的技術(shù)方案,因此 Flutter 研發(fā)團(tuán)隊(duì),也需要類似的熱更新
    的頭像 發(fā)表于 06-08 14:31 ?1061次閱讀
    <b class='flag-5'>Flutter</b>熱更新<b class='flag-5'>技術(shù)</b><b class='flag-5'>探索</b>

    如何自動(dòng)生成verilog代碼

    介紹幾種自動(dòng)生成verilog代碼的方法。
    的頭像 發(fā)表于 11-05 11:45 ?312次閱讀
    如何<b class='flag-5'>自動(dòng)</b><b class='flag-5'>生成</b>verilog<b class='flag-5'>代碼</b>