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.mzph.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…