- 全局字体统一(Outfit/DM Sans), 头部/按钮/Toast规范化 - 故事详情页: Genie Suck吸入动画(标题+卡片一起缩小模糊消失) - 书架页: bookPop弹出+粒子效果(三段式动画完整链路) - 音乐页面: 心情卡片emoji换Material图标+彩色圆块横排布局 - 音乐页面: 进度条胶囊宽度对齐, 播放按钮位置修复, 间距均匀化 - 音乐播放: 接入just_audio, 支持播放暂停进度拖拽自动切歌 - 新增: iOS风格毛玻璃Toast, 渐变背景组件, 通知页面 - 阶段总结文档更新 Co-authored-by: Cursor <cursoragent@cursor.com>
82 lines
3.4 KiB
Plaintext
82 lines
3.4 KiB
Plaintext
---
|
||
description: User preferences for communication and workflow
|
||
globs:
|
||
alwaysApply: true
|
||
---
|
||
|
||
# 用户偏好(必须遵守)
|
||
|
||
## 语言
|
||
- 永远使用中文回复,无论用户用什么语言输入(用户使用语音输入时系统可能自动翻译为英文)
|
||
|
||
## 沟通方式
|
||
- 用户不懂代码,不需要看代码修改过程
|
||
- 不要打开代码文件让用户审阅
|
||
- 直接完成修改,只展示最终结果
|
||
- 用产品语言描述变更("改好了,刷新看效果"),而非技术语言
|
||
- 用户擅长产品思维和创造力,用这个层面和他沟通
|
||
|
||
## 进度存档机制(防丢上下文,必须遵守)
|
||
- **新对话开始时**:第一件事先读 `阶段总结/session_progress.md`,了解之前做到哪了
|
||
- **每完成一个阶段性任务后**:主动更新 `阶段总结/session_progress.md`,记录:
|
||
- 这次做了什么
|
||
- 做到哪一步了
|
||
- 下一步要干什么
|
||
- 遇到了什么问题
|
||
- **对话即将结束前**(比如用户说"先到这""下次继续"等):必须更新存档
|
||
- **格式要求**:保持简洁,用产品语言,不要贴大段代码
|
||
|
||
## Flutter 开发流程(必须遵守)
|
||
|
||
### 端口管理
|
||
- 启动 `flutter run -d chrome` 前,**必须**先杀掉旧进程并确认端口已释放
|
||
- 流程:Stop-Process → 等3秒 → 确认端口空闲 → 再启动新进程
|
||
- 用完浏览器预览后,**必须**在做其他事之前先关闭 Flutter 进程释放端口
|
||
- 永远不要直接换端口来绕过占用,要先清理旧的
|
||
|
||
### 标准编译流程
|
||
```
|
||
# 1. 停旧进程
|
||
Stop-Process -Id $OLD_PID -Force -ErrorAction SilentlyContinue
|
||
Start-Sleep -Seconds 3
|
||
|
||
# 2. 确认端口空闲
|
||
netstat -ano | Select-String ":$PORT"
|
||
|
||
# 3. 用 web-server 模式启动(不会自动弹Chrome窗口!)
|
||
flutter run -d web-server --web-port=$PORT --no-pub
|
||
|
||
# 4. 手动在 Cursor 内置浏览器打开地址
|
||
# browser_navigate → http://localhost:$PORT
|
||
```
|
||
|
||
### 浏览器管理(极其重要)
|
||
- **禁止**用 `flutter run -d chrome`,它会自动弹出系统 Chrome 窗口
|
||
- **必须**用 `flutter run -d web-server`,只启动服务不弹浏览器
|
||
- 用 Cursor 内置浏览器 (browser_navigate) 手动打开地址预览
|
||
- 关闭时:先把内置浏览器导航到 about:blank,再停 Flutter 进程
|
||
- 如果不小心弹了系统 Chrome,也要记得关掉
|
||
|
||
### 编译优化
|
||
- 如果只改了 Dart 代码(没加新依赖/asset),用 `--no-pub` 跳过 pub get
|
||
- 如果添加了新 asset 文件,需要完整重新编译(不能 --no-pub)
|
||
- Web-server 模式首次编译约 60-90s,后续热重启约 20s
|
||
- Android 模拟器编译约 300s,非必要不用,最后验收时再用
|
||
|
||
### 网络与镜像源(必须遵守)
|
||
- 下载任何东西前,**优先使用国内镜像源**
|
||
- Flutter/Dart 包:设置环境变量后再执行
|
||
```
|
||
$env:PUB_HOSTED_URL = "https://pub.flutter-io.cn"
|
||
$env:FLUTTER_STORAGE_BASE_URL = "https://storage.flutter-io.cn"
|
||
```
|
||
- npm 包:使用淘宝镜像 `--registry=https://registry.npmmirror.com`
|
||
- pip 包:使用清华源 `-i https://pypi.tuna.tsinghua.edu.cn/simple`
|
||
- Gradle/Maven:使用阿里云镜像(已在 android/build.gradle.kts 配置)
|
||
- 如果镜像也失败,再尝试直连
|
||
|
||
### 资源/图片
|
||
- 新图片放入 assets/ 后必须重新完整编译才能生效
|
||
- HTML 原版图片在 assets/www/ 目录,如有问题先对照 HTML 代码里的引用路径
|
||
- 优先使用透明背景 PNG,避免白色方块
|