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

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

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

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

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

作者:京東物流 冷先鋒

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

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

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

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

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

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

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

三、微軟的Sketch2Code

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

wKgZomctcseAA-Q0AAG7vdjIks8352.png

?

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

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

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

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

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

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

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

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

四、Flutter代碼生成工具

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

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

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

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

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

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

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

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

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

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

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

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

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

?

五、京東的Ling平臺

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

wKgaomctcsqAOAfGAB0nFv8NXFU884.png

?羚瓏平臺?

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

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

wKgZomctcsyAGJcwAACqgp9ysIw095.png

wKgaomctcs6AJtefABBOSMyWq_w189.png

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

?

wKgZomctctCAad89AARvyRJfMxI088.png

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

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

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

wKgaomctctGAKjn4AAEgnPrKvBI428.png wKgZomctctKAddy2AAa2MotZfTo531.png

?

組件一:頭部卡片

?

wKgaomctctOAEMLLAAC2zEPmxxY199.png wKgZomctctSAAWNPAACoPmhFDCI484.png

?

?

組件二:運單卡片

?

wKgaomctctWACsc9AADNMiINDaA228.png wKgZomctctaAYwZEAADh18sTMV8407.png

?

小結(jié)

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

審核編輯 黃宇

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

    關(guān)注

    30

    文章

    4720

    瀏覽量

    68212
  • flutter
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

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

    關(guān)注

    2

    文章

    2271

    瀏覽量

    2346
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

    鴻蒙Flutter實戰(zhàn):09-現(xiàn)有Flutter項目支持鴻蒙

    添加依賴項,首先添加純dart編寫的包,再添加依賴于原生代碼/插件的包。注意挨個添加依賴,不要一次添加太多依賴,方便排查定位問題, 解決版本依賴問題,鴻蒙Flutter項目目前需要依賴于3.7版本
    發(fā)表于 10-23 16:36

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

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

    代碼自動生成工具,支持獨立MCU方案、SOC方案

    成功后點擊“應(yīng)用”3.生成目標(biāo)平臺代碼注:如果之前沒有定義數(shù)據(jù)點則無法使用自動生成代碼服務(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è)計的HDL代碼自動生成技術(shù)綜述

    ,開發(fā)艦載??账阉骼走_(dá)核心信號處理子系統(tǒng),完成系統(tǒng)級的仿真,自動生成75,000多行HDL代碼,節(jié)省了兩個工程師人年,該雷達(dá)系統(tǒng)最后完成了探索性的海上試驗。 2)美國的紅外熱成像
    發(fā)表于 06-08 09:29

    RTthread移植代碼自動生成方案

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

    CRC校驗代碼自動生成工具

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

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

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

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

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

    c語言代碼自動生成工具,MCU代碼自動生成工具介紹

    MCU代碼自動生成工具介紹文檔編輯原標(biāo)題:GoKit3二次開發(fā)-代碼自動生成工具介紹前文需知1.
    發(fā)表于 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 共創(chuàng)未來 | Flutter Forward 活動精彩回顧

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

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

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

    如何自動生成verilog代碼

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