Skip to content

Repository files navigation

SnapFlow

拍照片,生成步骤文档 —— 为现场工作者打造的移动端工作流手册工具。

Flutter Dart Build License

现场巡检、设备安装、运维记录场景下,打字不便,用拍照 + 语音快速生成结构化的操作手册,支持图片编辑、模板复用、PDF 导出。

✨ 核心功能

模块 能力
📸 拍照采集 相机拍摄 / 相册多选,三层数据存储(原图 / 编辑后 / 缩略图)
✂️ 图片编辑 旋转、调色(亮度/对比/饱和度);裁剪/标注/马赛克按钮已加入工具栏,渲染逻辑待接入
🎤 语音转文字 长按录音转文字,适配现场无法打字的场景(ASR 可替换为云端)
📑 模板复用 内置电力巡检、设备安装等工作流模板,一键创建
📄 PDF 导出 图文并茂的 PDF,系统分享发送
🏷 标签管理 手册多标签分类,标签筛选
📤 导入导出 手册 JSON 导出/导入,便于备份和跨设备迁移
🗂 手册管理 搜索、筛选(最近/收藏/未完成)、收藏、排序(更新/创建/标题/完成度)、滑动删除
✅ 进度跟踪 步骤完成态、整体完成进度、步骤拖拽排序
💾 本地持久化 drift (SQLite) 离线存储,无需联网

📱 平台支持

  • Android(主要目标,CI 自动构建 APK)
  • iOS(需 macOS 环境签名)
  • Linux(桌面调试)

🏗 架构

Clean Architecture lite,三层 + 八个 feature 模块:

lib/
├── app.dart                  # MaterialApp 入口 + 主题
├── main.dart                 # bootstrap
├── core/
│   ├── theme.dart            # SnapFlowTheme (teal-green #0D9488)
│   ├── db/                   # drift database + schema (Manuals/Steps/StepImages)
│   └── files/                # 三层文件服务 (originals/edited/thumbnails)
├── features/
│   ├── manual/               # 手册核心 (domain/data/presentation)
│   ├── capture/              # 图片采集抽象 (相机/相册)
│   ├── editor/               # 图片编辑器 (5 工具栏,裁剪/标注/马赛克待接入渲染)
│   ├── voice/                # 语音转文字 (ASR + hold-to-record)
│   ├── export/               # PDF 导出
│   ├── import_export/        # 手册 JSON 导出/导入
│   ├── tag/                  # 标签 CRUD + 手册打标签
│   └── template/             # 内置 + 用户自定义模板
└── shared/
    ├── providers.dart        # Riverpod providers
    └── widgets/              # EmptyState, SnapToast, SnapSheet, SnapIconButton

数据模型

Manual  1──*  Step  1──*  StepImage
  │             │              │
  │             │              ├─ originalPath   (原图)
  │             │              ├─ editedPath     (编辑后)
  │             ├─ title        └─ thumbnailPath  (缩略图)
  ├─ note
  ├─ completed
  └─ optionalFields (动态键值对)

🚀 快速开始

环境要求

  • Flutter ≥ 3.24
  • Dart ≥ 3.5
  • Android Studio / Xcode(移动端)

安装运行

# 克隆
git clone https://github.com/mo-888/snap-flow.git
cd snap-flow

# 安装依赖
flutter pub get

# 生成 drift 代码(首次或修改 schema 后)
dart run build_runner build --delete-conflicting-outputs

# 运行
flutter run

测试

flutter test          # 单元 + widget 测试
flutter analyze       # 静态分析

🔧 技术栈

类别 选型
框架 Flutter
状态管理 Riverpod 2
数据库 drift (SQLite)
图片处理 image
图片采集 image_picker
录音 record
PDF pdf + printing
分享 share_plus
文件选择 file_picker(导入 JSON)
路由 Navigator 1.0

📦 CI/CD

提交到 main 自动触发 GitHub Actions 三平台构建:

平台 产物 说明
Android snapflow-android.apk Release APK,可直接安装
iOS snapflow-ios-unsigned.zip 未签名 .app(无开发者账号,需自签 / sideload)
Linux snapflow-linux-x64.zip x64 bundle

下载方式

  • main 分支:构建成功后自动发布到 Releases 的 latest 预发布,每次提交覆盖更新。
  • 正式版:打 tag 触发,如 git tag v0.1.0 && git push --tags → 生成带 changelog 的正式 Release。
  • 临时产物:每次 run 的 Artifacts 也可在 Actions 页下载(保留 30 天)。

详见 .github/workflows/build.yml

⚠️ iOS 因无 Apple 开发者账号,CI 产出未签名 .app,仅作构建验证。要在真机运行需自备签名(个人签名 / AltStore / Sideloadly 等)。

📄 License

MIT