snap_wish/CLAUDE.md
2025-08-28 20:04:53 +08:00

3.1 KiB
Raw Blame History

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复杂、重点的运用和开发技巧方便后续复盘和学习