Cursor 写一个 Flutter Unsplash 壁纸工具 | 从零开始

Cursor 写一个 Flutter Unsplash 壁纸工具 | 从零开始

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 项目

cmd + k 命令面板

点击终端 tab ,cmd + k 打开命令面板。

# 提示词

创建 flutter 项目,程序名 flutter_curosr_unsplash , 包名 unsplash.ducafecat.com
  • 打开 flutter 目录

保证根目录是flutter_curosr_unsplash

用 cursor 打开新创建的 flutter_curosr_unsplash 目录,保证这是根目录。

  • 初始 git 环境

git版本控制初始

没完成一个功能,我们就要进行版本提交。

这样之后遇到改坏文件,我们进行 git 历史版本签出。

构建欢迎界面

  • 准备 Unsplash Key

Unsplash Key

https://unsplash.com/oauth/applications

注册后,创建一个应用,获取 api key 。

  • 确保 Composer 被打开

cursor composer open

  • 打开 Composer 面板

cmd + i 方式打开。

  • 提示词
你现在是一名 flutter 的工程师。

需要一个欢迎页面,点击确认才会进入首页界面,完整需求如下:
- 随机读取 unsplash 一张图片,作为背景。
- 图片 1080p 即可
- unsplash 的通讯类
- 需要写好完整的函数输入参数,输出对象说明
- 欢迎界面有一个刷新图片的按钮
- 关闭右上角 debug 标签

composer返回信息

点击 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 好在两个地方:

  1. 有 compose 功能,帮你生成内容写到文件中
  2. 有命令行 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905304.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

十分钟Linux中的epoll机制

epoll机制 epoll是Linux内核提供的一种高效I/O事件通知机制,用于处理大量文件描述符的I/O操作。它适合高并发场景,如网络服务器、实时数据处理等,是select和poll的高效替代方案。 1. epoll的工作原理 epoll通过内核中的事件通知接口和文件…

【每日刷题】Day147

【每日刷题】Day147 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 神奇数_牛客笔试题_牛客网 2. DNA序列__牛客网 3. I-十字爆破_牛客小白月赛25 1. 神奇数_牛客笔…

干部出国境管理系统:规范管理,确保安全

在全球化的时代背景下,干部因工作需要或个人原因出国境的情况日益增多。为了加强对干部出国境的管理,确保干部出国境活动规范、有序、安全,干部出国境管理系统应运而生。 一、干部出国境管理系统的重要性 规范管理流程 干部出国境管理系统…

基于Qt的多线程并行和循序运行实验Demo

致谢(Acknowledgement): 感谢Youtube博主Qt With Ketan与KDAB精心录制的Qt多线程处理应用教程,感谢Bilibili博主爱编程的大丙对Qt多线程与线程池内容深入浅出的讲解。 一、计算机线程相关概念 线程概念[1]: 在计算机科…

PyCharm专业版设置远程开发环境

以下是在PyCharm中设置远程开发环境的详细步骤: 没有专业版的在并夕夕上买 准备工作 确保本地已安装PyCharm专业版,因为社区版通常不支持远程开发功能。在远程服务器上安装好所需的Python版本以及相关的开发包和库,并且服务器需要开启SSH服务…

MySQL基础概念——针对实习面试

目录 MySQL基础什么是关系型数据库?什么是SQL?什么是ACID属性?什么是MySQL?MySQL为什么流行(它的优点)? 30秒读全文 MySQL基础 什么是关系型数据库? 关系型数据库(Relat…

深入布局- grid布局

属性使用案例: 一、display 通过给元素设置:display:grid | inline-grid,可以让一个元素变成网格布局元素, display: grid:表示把元素定义为块级网格元素,单独占一行;(如下图:) display: inlin…

【力扣打卡系列】反转链表

坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day12 反转链表 题目描述 解题思路 最开始的头节点为空,可以赋值为nil从前往后依次逆转下一个节点的指向即可 代码参考 /*** Definition for singly-linked list.* type ListNode s…

超越YOLO11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务

D-FINE 在 COCO 数据集上以 78 FPS 的速度取得了 59.3% 的平均精度 (AP),远超 YOLOv10、YOLO11、RT-DETR v1/v2/v3 及 LW-DETR 等竞争对手,成为实时目标检测领域新的领跑者。目前,D-FINE 的所有代码、权重以及工具已开源,包含了详…

已解决:VS2022一直显示编译中但无法运行的情况

本问题已得到解决,请看以下小结: 关于《VS2022一直显示编译中但无法运行的情况》的解决方案 记录备注报错时间2024年报错版本VS2022报错复现突然VS2022不能启动,一直显示编译中,取消重试无效,重新生成解决方案无效报错…

UML图之对象图详解

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 零、什么是对象图 对象图(Object Diagram)是UML中一种重要的静态结构图,它用于表示在特定时间点上系统中的对…

微信支付宝小程序SEO优化的四大策略

在竞争激烈的小程序市场中,高搜索排名意味着更多的曝光机会和潜在用户。SEO即搜索引擎优化,对于小程序而言,主要指的是在微信小程序商店中提高搜索排名,从而增加曝光度和用户访问量。有助于小程序脱颖而出,提升品牌知名…

Java面试经典 150 题.P27. 移除元素(002)

本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int removeElement(int[] nums, int…

新160个crackme - 088-[KFC]fish‘s CrackMe

运行分析 需破解用户名和RegKey PE分析 C程序,32位,无壳 静态分析&动态调试 ida函数窗口逐个查看,找到关键函数sub_401440 ida无法动调,需使用OD,启用StrongOD插件才可以动调ida静态分析,逻辑如下&…

[Linux关键词]unmask,mv,dev/pts,stdin stdout stderr,echo

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

你知道你的顾客长什么样儿吗 | 顾客画像的魅力

0139岁、亚裔、女性和 Costco 「一位 39 岁的亚裔女性,年收入可达到 12.5 万美金」,这是 Numerator 描绘的 Costco 2023 年的顾客画像。而一个典型的 Costco 会员每两周的周末会去一次 Costco(约为每年前往Costco采买30次)&…

报表制作神器,轻松应对复杂报表

在企业运营中,面对海量数据和复杂报表的处理,不少公司都希望能有一款便捷、高效的工具来帮忙完成各类报表任务。今天要给大家推荐的是一款备受用户好评的国产报表工具——山海鲸报表,它不仅能处理复杂的数据表,还拥有丰富的可视化…

auto 项目笔记

基础设置 1.设置python目录为根路径 1. merge_with_history debug (1) coomon.yaml 修改 最下边的 root: /mnt/sdb/daimler/EHPV2/Ruiming_InternalDaily (2) 环境变量设置为1时 不走此步骤做的任何处理,直把上步数据接透传出去 2.

亚马逊云免费Amazon CloudFront服务

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 引言一、亚马逊云科技简介二、亚马逊云科技免费资源注册信息准备注册亚马逊云科技账号 三、…

企业应该采用和支持网络安全的几个实践

令人惊讶的是,网络安全可以像遵循最佳实践一样简单,理想情况下应该将其融入企业文化本身。在这篇文章中了解更多。 网络安全的重要性 在当今的网络安全期望中,软件工程师应该优先考虑他们的计算机系统和内部IT网络的安全性。我认为严重依赖…