Cursor 写一个 Flutter Unsplash 壁纸工具 | 从零开始
视频
https://space.bilibili.com/404904528/channel/collectiondetail?sid=4106380
https://www.youtube.com/watch?v=-ecvMPs5vN4&list=PL274L1n86T835KIPMBSwWMy1At6XCJDVR
前言
原文 用Cursor和Flutter构建动态图片墙的完整教程
使用 Curosr 工具,通过文字方式提供需求,竟可能不写一行代码来实现一个 Unsplash 图片墙工具。
参考
- Cursor Ai Ide
- Curosr Docs
- Curosr Docs Symblos
步骤
安装 curosr 工具
https://www.cursor.com/
安装完后会问你回答问题用什么语言,你输入中文。
Always respond in 中文
初始项目
- 创建工作目录
新建一个 flutter_curosr 目录,然后用 curosr 打开,我们之后都是这个目录下操作。
- 创建 flutter 项目
点击终端 tab ,cmd + k 打开命令面板。
# 提示词
创建 flutter 项目,程序名 flutter_curosr_unsplash , 包名 unsplash.ducafecat.com
- 打开 flutter 目录
用 cursor 打开新创建的 flutter_curosr_unsplash 目录,保证这是根目录。
- 初始 git 环境
没完成一个功能,我们就要进行版本提交。
这样之后遇到改坏文件,我们进行 git 历史版本签出。
构建欢迎界面
- 准备 Unsplash Key
https://unsplash.com/oauth/applications
注册后,创建一个应用,获取 api key 。
- 确保 Composer 被打开
- 打开 Composer 面板
cmd + i 方式打开。
- 提示词
你现在是一名 flutter 的工程师。
需要一个欢迎页面,点击确认才会进入首页界面,完整需求如下:
- 随机读取 unsplash 一张图片,作为背景。
- 图片 1080p 即可
- unsplash 的通讯类
- 需要写好完整的函数输入参数,输出对象说明
- 欢迎界面有一个刷新图片的按钮
- 关闭右上角 debug 标签
点击 Accept All 按钮,应用所有的修改。
- 修正问题
- 启动程序
构建图片墙列表页
提示词 cmd + i
首页是图片墙样式的列表界面:
- 每行图片数量最少3张,按屏幕宽度自动计算图片数量(自适应)
- 每张图片正方形显示
- 拉取的图片分辨率 200x200
- 向下滚动时自动拉取新图片
- 顶部有一个分类的按钮组可切换,数量多横向可滚动。
- 请在控制台打印错误信息
- 注意图片拉取是是按分类筛选,默认全部
- 每个函数请加输入参数,输出类型的说明
- 标题居中,文字改成 壁纸工具
- 图片需要加入缓存功能
壁纸列表 任务完成,并提交 git。
构建图片详情页
提示词 cmd + i
- 详情页
点击图片墙列表进入图片详情页:
- 图片分辨率 1440p
- 全屏显示图片
- 支持手势缩放、旋转
- 顶部保留导航栏
- 导航栏有图片分享按钮
- 图片需要缓存
- 保存相册功能
功能多,你需要分次进行,中间记得 提交 git。
图片详情页进一步优化体验:
- 打开页面后先显示一张小图,全屏拉伸显示
- 等待下载大图的时候需要如下细节:
- loading载入中
- 转圈动画,线条腰粗
- 显示百分比进度,保留整数部分
图片保存
提示词 cmd + i
图片详情页实现图片保存功能:
- 使用 https://pub.dev/packages/saver_gallery 组件进行保存操作
样式调整
提示词 cmd + i
现在要对样式做些调整:
- 欢迎页、首页、图片详情页加入切换明暗色主题
- 主题颜色设置为 #ba7264
- 按钮、FilterChip 随主题色
- 首页图片载入的 CircularProgressIndicator 随主题色
- 详情页图片载入的 CircularProgressIndicator 随主题色
- 欢迎页图片分辨率 720p
- 首页列表图片分辨率 200x200
- 图片页大图分辨率 1440p
写 README.md 文档
提示词
本程序用 flutter 开发的,请帮我写一个当前程序的技术说明文档,需要包含如下内容:
- 程序名称 "Unsplash壁纸工具"
- 功能介绍
- flutter 组件列表
- 程序目录文件清单(最多3层目录)
生成的 README.md 内容
# Unsplash 壁纸工具
一个使用 Flutter 开发的壁纸应用,基于 Unsplash API,提供高质量图片的浏览、下载和分享功能。
## 功能介绍
### 欢迎页
- 随机显示 Unsplash 图片(480p)
- 支持刷新随机图片
- 显示摄影师信息
- 支持明暗主题切换
### 首页
- 图片瀑布流布局(200x200 缩略图)
- 支持下拉刷新、上拉加载更多
- 横向滚动的分类选择
- 支持明暗主题切换
### 图片详情页
- 高清图片显示(1440p)
- 支持手势缩放和旋转
- 图片保存到相册
- 分享图片链接
- 支持明暗主题切换
- 显示加载进度
## 使用的 Flutter 组件
### 核心组件
- MaterialApp:应用程序框架
- Scaffold:页面布局框架
- Stack:层叠布局
- Column:垂直布局
- GridView:网格布局
- ListView:列表布局
### 第三方组件
- cached_network_image: ^3.3.0 - 图片缓存
- photo_view: ^0.14.0 - 图片查看器
- share_plus: ^10.1.1 - 系统分享
- saver_gallery: ^4.0.0 - 图片保存
- http: ^1.1.0 - 网络请求
### UI 组件
- CircularProgressIndicator - 加载指示器
- FilterChip - 分类选择
- IconButton - 图标按钮
- ElevatedButton - 凸起按钮
- GestureDetector - 手势检测
## 项目结构
```sh
lib/
├── main.dart # 应用程序入口
├── pages/ # 页面目录
│ ├── welcome_page.dart # 欢迎页
│ ├── home_page.dart # 首页
│ └── photo_detail_page.dart # 图片详情页
└── services/ # 服务目录
└── unsplash_service.dart # Unsplash API 服务
android/ # Android 平台相关配置
├── app/
│ ├── build.gradle
│ └── src/
│ └── main/
│ └── AndroidManifest.xml
└── build.gradle
ios/ # iOS 平台相关配置
└── Runner/
└── Info.plist
```
## 开发环境
- Flutter 3.19.0
- Dart 3.5.4
- Android SDK 34.0.0
- Xcode 15.0
代码
本文配套代码
小结
看到这里可以发现 cursor 比 copilot 好在两个地方:
- 有 compose 功能,帮你生成内容写到文件中
- 有命令行 ai 提示,支持上下文
感谢阅读本文
如果有什么建议,请在评论中让我知道。我很乐意改进。
猫哥 APP
- SaaS Fast
- Flutter GetX Generator
flutter 学习路径
- Flutter 优秀插件推荐
- Flutter 基础篇1 - Dart 语言学习
- Flutter 基础篇2 - 快速上手
- Flutter 实战1 - Getx Woo 电商APP
- Flutter 实战2 - 上架指南 Apple Store、Google Play
- Flutter 基础篇3 - 仿微信朋友圈
- Flutter 实战3 - 腾讯即时通讯 第一篇
- Flutter 实战4 - 腾讯即时通讯 第二篇
© 猫哥
ducafecat.com
end