AI生成Flutter UI代碼實踐(一)

請添加圖片描述

之前的雜談中有提到目前的一些主流AI編程工具,比如Cursor,Copilot,Trea等。因為我是Android 開發,日常使用Android Studio,所以日常使用最多的還是Copilot,畢竟Github月月送我會員,白嫖還是挺香的。

但是用過Cursor的也都知道它的強大,但是做Android開發還是不方便,需要兩個工具來回切換使用。所以就在想寫flutter應該不錯,所以在早些時間就試了試,整體來說還是不錯的。但是剛開始還是有些不習慣,整體效率沒有明顯提升,就擱置了。

后來受到啟發,在想能否上傳設計圖給Cursor,讓它幫我寫UI。畢竟在我的經驗里,UI的耗時基本占一個需求的60%左右,畢竟要還原設計稿,細節還是不少的,也需要不斷適配調式。于是測試了一番,最近有了一些階段性成果,整理分享一下,拋磚引玉。

測試頁面

在這里插入圖片描述
選了一個很簡單的頁面,試試水。公平起見,以下效果均是第一次生成的結果,不會嘗試多次,挑選效果好的或是差的對比。

測試方案

Codia

figma插件,可以在figma上將設計稿轉換為代碼并導出。使用方法不做過多介紹,見官網。

測試效果:
請添加圖片描述

優點:

  • 使用方便,直接導出flutter項目,圖片資源等都打包好。
  • 還原度高。頁面大小,間距,顏色等信息都是正確的。

缺點:

  • 寬高和位置都是寫死的(用的Stack + Positioned),導致代碼幾乎不可用。
  • 頁面中的狀態欄,底部的黑色小條當做頁面內容生成了,比較傻瓜。
  • 不靈活,不能交互。例如圖中的底部進度條都是圖片。banner的部分也是圖片一張,不能滑動。

Cursor + Claude 3.5

Cursor中上傳UI頁面的圖片,提示詞:根據圖片,生成Flutter代碼。

測試效果:
請添加圖片描述
優點:

  • 生成的代碼中各個控件位置不會寫死。

缺點:

  • 還原度差的遠,或許多次嘗試會有好的。
  • 也無法獲取頁面中的切圖,上面的人物圖片是我自己替換的。

原因:figma插件掌握的信息更多,上傳圖片的方式只能靠ai識別圖中信息,在間距,大小,顏色上都做不到不準確。

Cursor + Claude 3.7

后面更新了Claude 3.7,編程能力有所提升,所以我又試了一次。

效果:下圖中最后一張是Claude 3.7生成的效果。

在這里插入圖片描述
還原度有提升,但問題還是一樣,顏色,圓角,大小,間距都是不對的。同時截止目前沒有一個方案可以識別圖中的輪播效果并實現。


以上是第一階段測試,基于當時(25年2月20日)的工具和AI能力實現的。兩種方案各有千秋,如果可以綜合到一起那效果可以更好。

CodeParrot

地址:https://codeparrot.ai
VSCode插件,將figma頁面地址粘貼進去,可以基于當前項目的主題,組件庫去生成代碼。

效果:

在這里插入圖片描述
優點:

  • 可以獲取頁面信息,寬高大小等信息比較準確,自動切圖。
  • 有一定還原度,代碼靈活。例如這里的輪播效果實現了。

缺點:

  • 頁面理解能力不強,比如狀態欄和底部小條的處理。
  • 切圖不準確(這個例子中是將圖片和指示器一塊切出,同時上傳圖片到它們的服務器上,這里用的圖片是鏈接地址。。。)

但整體來說,又進步了一些。

Cursor + MCP + Claude 3.7

到這里就來到了本篇的重點。

前一陣Cursor支持了MCP,同時也有了大量的MCP工具出現。這次我使用到的是Figma-Context-MCP。

配置好后如下圖,它提供兩個工具,一個是獲取figma頁面信息,一個是下載切圖。這正是我們需要的。

在這里插入圖片描述
使用方法也很簡單,CursorAgent模式,填入figma地址,加上提示詞。

第一輪測試

請添加圖片描述
使用Cursor的好處是,可以幫我們將圖片下載到對應的文件夾內并引用,包括輪播依賴的引用等。

請添加圖片描述

左邊這個是我第一次嘗試時的效果,右邊是第二次。差距這么大的一個原因是figma給到的信息是json,里面包含頁面的層級,控件大小,顏色這些。一開始figma上頁面的層級是不標準的,例如:按鈕的文字和按鈕不在一個組里面,指示器也一樣。所以布局也就有概率混亂。

第二輪測試

后面調整了一下figma上的層級,每個組的命名也規范了。這樣等于是給到了AI更多的信息。

在這里插入圖片描述
重新生成了一下,效果:

在這里插入圖片描述
左邊是生成的效果,右邊是我改了一下輪播區域比例后的效果。看的仔細的話,你會發現字體也是對的,之前其實都是默認字體。同時不知道是不是命名的關系,iOS底部的黑條(Home Indicator)也沒有了。

其實上面的CodeParrot就是用調整后的設計稿生成的,所以輪播效果大概率也是因為這點才實現了。

第三輪測試

后面我看了一下代碼,發現文字顏色,大小,字體,字重都是對的,但是間距,寬高這些還是有問題。看了一下figma給到的信息中是有寬高的,間距沒有(其實也可以理解,畢竟間距是給相對概念,不太好給到)。但是這個mcp在簡化json信息的時候去掉了寬高。所以我修改了源碼,將控件寬高信息保留。測試效果如下:

在這里插入圖片描述
我本身以為給到AI寬度會讓它寫死寬高,但實際上它自己會做識別(不穩定),在合適的地方使用。比如指示器就使用寬高,底部按鈕就只使用高度。這個效果基本上改改已經可以用了。

不過這次頂部的漸變背景不見,字體也不對了。看來這塊還是不穩定。

優點:

  • 可以獲取頁面信息,自動下載切圖。
  • 還原度較高,代碼靈活。
  • 自由組合,后面可以使用更優秀的模型或是MCP來提升效果。

缺點:

  • 要求設計對頁面進行標準命名,分組。
  • 需要更多的配置(MCP,rules)

以上是第二階段測試,基于當時(25年4月1日)的工具和AI能力實現的。目前來說Cursor + MCP是目前最理想的方案。同時以目前的情況看,大多數AI生成代碼只能用figma,藍湖目前沒有接口,這方面差的遠。

到此本篇結束,下一篇我會介紹進一步優化的方案及效果。很快,敬請期待~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79081.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79081.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79081.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計網分層體系結構(包括OSI,IP,兩者對比和相關概念)

眾所周知,就像我們計算機領域中的任何東西一樣,計算機網絡也是個分層的體系結構,現代提出的結構就兩種——OSI和TCP/IP,我們先來剖析并對比一下這兩種模型,然后總結一下分層思想中的一些共性。 TCP/IP與OSI結構對比圖 …

面向對象的XML綜合練習

快遞包裹配送管理 需求描述 構建一個快遞包裹配送管理系統,完成以下操作: 記錄每個快遞包裹的信息,包括包裹編號、收件人姓名、收件地址和是否已配送。可以添加新的快遞包裹到系統中。標記某個包裹為已配送狀態。統計所有已配送和未配送的…

什么是鴻蒙南向開發?什么是北向開發?

文章目錄 鴻蒙南向開發 vs 北向開發:底層與生態的雙向賦能一、鴻蒙南向開發:連接硬件的底層基石二、鴻蒙北向開發:構建全場景應用生態三、南向與北向:互補與協同四、如何選擇開發方向?結語 鴻蒙南向開發 vs 北向開發:…

Linux常用命令27——userdel刪除用戶

在使用Linux或macOS日常開發中,熟悉一些基本的命令有助于提高工作效率,userdel命令來自英文詞組user delete的縮寫,其功能是刪除用戶信息。在Linux系統中,一切都是文件,用戶信息被保存到了/etc/passwd、/etc/shadow以及…

[藍橋杯 2021 省 AB] 砝碼稱重 Java

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int[] w new int[n 1];int sum 0; // 所有砝碼重量之和for (int i 1; i < n; i) {w[i] sc.nextInt();sum w[i];}sc.close()…

今天的python練習題

目錄 一、每日一言 二、練習題 三、效果展示 四、下次題目 五、總結 一、每日一言 晚上8點到的&#xff0c;還是會被感動到&#xff0c;有一位列車員同志在檢票期間&#xff0c;叫我到列車員專座位上去坐&#xff0c;我很感激他&#xff0c;溫暖人心&#xff0c;所以人間填我…

20250430在ubuntu14.04.6系統上查看系統實時網速

rootrootubuntu:~$ sudo apt-get install iftop 【不需要root權限】 rootrootubuntu:~$ sudo apt-get install nload rootrootubuntu:~$ sudo apt-get install vnstat 【失敗】 rootrootubuntu:~$ sudo apt-get install speedtest-cli rootrootubuntu:~$ sudo apt-get install …

字節一面:后端開發

前言 這是我字節一面的回憶錄&#xff0c;可能有些不全。 由于博主是Java面試Go崗&#xff0c;操作系統和計網問的還是比較多。 個人感覺字節很喜歡追問&#xff0c;博主被追問拷打的找不到北了&#xff0c;總結還是學的太淺了。 面試官給我的建議&#xff1a;再更深挖一些…

快速掌握大語言模型+向量數據庫_RAG實現

一、前言 結合前面掌握的vLLM部署Qwen7B模型、通過Embedding模型&#xff08;bdg-large-zh模型&#xff09;提取高質量作文內容并預先存儲到Milvus向量數據庫中&#xff0c;我們很容易實現RAG方案進一步提高寫作內容的生成質量。 本篇要實現的目標是&#xff1a;通過FlaskAPI…

【FreeRTOS-列表和列表項】

參照正點原子以及以下gitee筆記整理本博客&#xff0c;并將實驗結果附在文末。 https://gitee.com/xrbin/FreeRTOS_learning/tree/master 一、列表和列表項的簡介(熟悉) 1、什么是列表 答&#xff1a;列表是FreeRTOS中的一個數據結構&#xff0c;概念上和鏈表有點類似&#…

【c++】【STL】queue詳解

目錄 queue的作用什么是容器適配器queue的接口構造函數emptysizefrontback queue類的實現 queue的作用 queue是stl庫提供的一種容器適配器&#xff0c;也就是我們數據結構中學到的隊列&#xff0c;是非常常用的數據結構&#xff0c;特點是遵循LILO&#xff08;last in last ou…

【一】 基本概念與應用領域【數字圖像處理】

考綱 文章目錄 1 概念2005甄題【名詞解釋】2008、2012甄題【名詞解釋】可考題【簡答題】可考題【簡答題】 2 應用領域【了解】2.1 伽馬射線成像【核醫學影像】☆2.2 X射線成像2.3 紫外波段成像2.4 可見光和紅外波段成像2.5 微波波段成像2.6 無線電波段成像2.7 電子顯微鏡成像2…

RAG技術完全指南(一):檢索增強生成原理與LLM對比分析

RAG技術完全指南&#xff08;一&#xff09;&#xff1a;檢索增強生成原理與LLM對比分析 文章目錄 RAG技術完全指南&#xff08;一&#xff09;&#xff1a;檢索增強生成原理與LLM對比分析1. RAG 簡介2. 核心思想3. 工作流程3.1 數據預處理&#xff08;索引構建&#xff09;3.2…

對計網考研中的信道、傳輸時延、傳播時延的理解

對計網考研中的信道、傳輸時延、傳播時延的理解 在學習數據鏈路層流量控制和可靠傳輸那一節的三個協議的最大信道利用率時產生的疑惑 情景&#xff1a; 假如A主機和B主機通過集線器連接&#xff0c;A和集線器是光纖連接&#xff0c;B和集線器也是光纖連接&#xff0c;A給B發…

【2025五一數學建模競賽C題】社交媒體平臺用戶分析問題|建模過程+完整代碼論文全解全析

你是否在尋找數學建模比賽的突破點&#xff1f;數學建模進階思路&#xff01; 作為經驗豐富的美賽O獎、國賽國一的數學建模團隊&#xff0c;我們將為你帶來本次數學建模競賽的全面解析。這個解決方案包不僅包括完整的代碼實現&#xff0c;還有詳盡的建模過程和解析&#xff0c…

使用 Spring Boot Actuator 實現應用實時監控

1. 引言 1.1 什么是 Spring Boot Actuator Spring Boot Actuator 是 Spring Boot 提供的一組生產級功能模塊,用于幫助開發者對 Spring Boot 應用進行監控和管理。它提供了一系列 REST API 端點(Endpoints),可以獲取應用程序的運行狀態、健康檢查、度量指標等信息。 這些…

2025MathorCup數學應用挑戰賽B題

目錄 模型建立與求解 1.問題一的模型建立與求解 1.1 搬遷補償模型設計 1.2 住戶是否搬遷的應對策略與分析 1.3 定量討論 2.問題二的模型建立與求解 2.1 搬遷方案模型的優化介紹 2.2 模型的評估 2.3 模型結果 3.問題三的模型建立與求解 3.1 拐點存在性分析模型的建立 3.2 模型的…

西門子數字化研發設計制造一體化規劃案例P87(87頁PPT)(文末有下載方式)

資料解讀&#xff1a;《西門子數字化研發設計制造一體化規劃案例》 詳細資料請看本解讀文章的最后內容。 該文檔圍繞西門子為企業打造的智能化制造研發工藝生產一體化平臺規劃方案展開&#xff0c;全面闡述了從業務現狀分析到項目實施及案例分享的整個過程。 業務現狀與需求分析…

stm32基礎001(串口)

文章目錄 通信的基本概念串行通信和并行通信單工&#xff0c;半雙工和全雙工串口的硬件連接 stm32的串口原理圖CPU的芯片手冊stm32串口的庫函數實現通過串口實現printf函數使用中斷實現串口的接收 通信的基本概念 串行通信和并行通信 串行通信一個方向只有一個數據通道&#x…