3.1 KiB
3.1 KiB
CLAUDE.md
此文件为 Claude Code (claude.ai/code) 提供本仓库代码开发的指导说明。
项目概览
SnapWish - 一款使用中文界面的 Flutter 照片管理应用。该应用允许用户将照片组织到分类中、添加标签并管理他们的照片收藏。
架构结构
该应用采用标准的 Flutter Material Design 架构:
- 主入口:
lib/main.dart- 包含根组件和导航设置 - 导航: 底部导航栏包含 2 个标签页(照片、分类)
- 悬浮按钮: 通用添加照片按钮
- 页面: 位于
lib/pages/目录
核心组件
主结构 (lib/main.dart)
- SnapWishApp: 根 MaterialApp 组件,包含主题配置
- MainPage: 管理底部导航的有状态组件
- 路由:
/add-photo路由用于添加新照片
页面 (lib/pages/)
- PhotoPage (
photo_page.dart): 照片网格显示和照片详情查看器 - CategoriesPage (
categories_page.dart): 文件夹/分类管理,包含创建/删除功能 - AddPhotoPage (
add_photo_page.dart): 照片上传表单,包含分类选择和标签功能
开发命令
构建与运行
# 安装依赖
flutter pub get
# 运行开发服务器
flutter run
# 构建 APK
flutter build apk
# 构建 iOS 应用
flutter build ios
# 构建 Web 应用
flutter build web
测试与代码质量
# 运行所有测试
flutter test
# 运行特定测试文件
flutter test test/widget_test.dart
# 代码分析
flutter analyze
# 代码格式化
flutter format .
开发工作流
# 开发期间热重载
flutter run --hot
# 检查过时包
flutter pub outdated
# 升级包
flutter pub upgrade
代码模式
状态管理
- 使用 StatefulWidget 进行本地状态管理
- 使用 setState 进行 UI 更新
- 目前使用模拟数据(标有 TODO 注释)
导航
- 命名路由 用于主要导航 (
/add-photo) - Navigator.push 用于照片详情查看
- BottomNavigationBar 用于主标签页切换
UI 组件
- Material 3 设计系统 (
useMaterial3: true) - 中文界面(标签为中文)
- 响应式网格布局 用于照片显示
- 对话框式 交互用于分类管理
数据结构模式
- 模拟数据 目前以 Lists/Maps 实现
- 分类结构:
{name: String, count: int, isDefault: bool} - 标签管理: 字符串列表支持 # 前缀
关键 TODO 项目
代码库包含多个 TODO 注释,指示计划功能:
- 用真实照片数据替换模拟数据
- 实现从设备选择照片功能
- 添加照片保存功能
- 实现收藏/分享/删除功能
- 按分类筛选照片
- 集成真实文件夹/分类数据
当前限制
- 无实际照片存储/检索(仅模拟数据)
- 无相机集成
- 无持久化存储
- 无图像缓存或优化
- 仅基础错误处理
开发环境
- Flutter: 3.2.5+
- Dart: 3.2.5+
- 目标平台: iOS、Android(支持 Web)
- 构建工具: 标准 Flutter 工具链
特殊说明
- 代码中使用中文注释,且简介、有效的说明逻辑,并支持flutter复杂、重点的运用和开发技巧,方便后续复盘和学习