Cursor 寫一個 Flutter Unsplash 桌布工具 | 從零開始
影片
https://space.bilibili.com/404904528/channel/collectiondetail...
https://www.youtube.com/watch?v=-ecvMPs5vN4&list=PL274L1n86T8...
前言
原文 用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