# srt_reader **Repository Path**: pish7/srt_reader ## Basic Information - **Project Name**: srt_reader - **Description**: 字幕学习App - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-14 - **Last Updated**: 2026-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # srt_reader SRT 字幕文件阅读、注释、学习。 ## 依赖安装 ```sh flutter pub add get flutter_hooks freezed_annotation json_annotation shared_preferences toastification file_picker path path_provider sqflite flutter_markdown dev:flutter_lints dev:freezed dev:json_serializable dev:build_runner dev:flutter_gen_runner dev:custom_lint ``` ## 常用命令 ```sh flutter clean # 清理缓存 rm -rf .dart_tool pubspec.lock flutter pub get # 重新获取依赖 flutter pub upgrade --major-versions # 跨大版本升级 dart run build_runner build --delete-conflicting-outputs # 生成文件 flutter create --platforms macos . # 添加 macos 支持 ``` ## macos 网络访问失败 使用 macos 平台访问网络时,需要在 `macos/Runner/DebugProfile.entitlements` 和 `macos/Runner/Release.entitlements` 中添加以下权限: ``` com.apple.security.network.client ``` ## 需求文档 SRT 字幕学习助手 - 需求文档 1. 产品概述 一个帮助用户通过电影字幕学习外语的 Flutter 应用,支持 macOS 和 Android 平台。用户可以导入 SRT 字幕文件,在阅读过程中遇到不懂的台词时,向 AI 提问获取解释,并支持缓存和追问功能。 2. 功能需求 2.1 文件管理 - 导入 SRT 文件 - 支持从文件系统选择 SRT 文件 - 自动解析文件名和内容 - 支持导入多个文件 - 文件列表展示 - 显示文件名 - 提供删除文件功能 - 文件存储 - 记录文件路径、文件名、哈希值 2.2 SRT 解析 - 解析 SRT 格式 - 支持标准 SRT 格式 - 解析序号、时间轴、字幕内容 - 处理空行和特殊字符 2.3 字幕阅读 - 台词列表展示 - 显示时间戳 - 显示字幕内容 - 支持滚动浏览 - 台词交互 - 点击台词卡片弹出解释窗口 - 已提问的台词显示标记(如星标) - 支持快速定位 2.4 AI 问答 - 台词提问 - 点击台词后可向 AI 提问 - AI 能看到前后几句台词的上下文(默认前后各 3 句) - 支持自定义上下文范围 - 解释模式 - 翻译 - 语法分析 - 文化背景解释 - 用户自定义提问 2.5 缓存系统 - 缓存存储 - 使用 SQLite 存储缓存数据 - 每个台词的唯一标识:文件哈希 + 台词序号 - 存储内容:AI 回复、用户编辑、追问历史 - 缓存读取 - 点击台词时优先读取缓存 - 缓存存在则直接显示 - 用户编辑 - 可编辑 AI 的回复内容 - 编辑后自动保存 - 追问功能 - 支持对同一条台词继续提问 - 保持对话历史上下文 - 追问结果追加到历史记录 - 缓存管理 - 支持清除单个文件缓存 - 支持清除所有缓存 2.6 设置 - API 配置 - 配置 AI API Key - 配置 API 端点 - 配置模型名称 - 缓存管理 - 查看缓存大小 - 清除缓存按钮 1. 界面设计 3.1 文件管理主页 - 顶部 - 应用标题 - 搜索框 - "+" 导入新文件按钮 - 中部 - 文件卡片列表 - 每个卡片显示: - 文件名 - 删除按钮 - 底部 - 设置按钮 3.2 字幕阅读页 - 顶部栏 - 左侧:返回按钮(回到文件列表) - 中间:当前文件名 - 右侧:当前阅读进度 - 主体 - 台词列表(可滚动) - 每个台词卡片: - 时间戳(如:00:01:23,456 --> 00:01:26,789) - 字幕内容 - 已提问标记(右上角星标) - 点击整个卡片触发解释弹窗 - 底部栏 - 搜索台词功能(可选) 3.3 解释弹窗 - 上部 - 完整台词内容 - 时间戳 - 前后台词上下文(可折叠) - 中部 - AI 解释区域(可编辑的文本框) - 如果有追问历史,显示对话历史(可展开/折叠) - 底部操作栏 - "编辑笔记"按钮(切换编辑模式) - "继续追问"按钮(弹出输入框) - "保存"按钮(保存编辑内容) - "关闭"按钮 3.4 设置页 - API 配置区域 - API Key 输入框 - API 端点输入框 - 模型名称输入框 - 测试连接按钮 - 缓存管理区域 - 显示缓存文件大小 - 清除缓存按钮 - 返回按钮 1. 技术栈 4.1 核心 - Flutter (支持 macOS 和 Android) - 优先使用 get 和 flutter_hooks 实现功能 4.2 依赖包 - 文件处理: file_picker - 数据存储: shared_preferences, sqflite, path_provider - 网络请求: get - 状态管理: get + flutter_hooks 1. 非功能需求 5.1 性能 - 台词列表滚动流畅(60fps) 5.2 用户体验 - 界面简洁清晰 - 操作流程简单直观 - 支持深色模式(可选) 5.3 数据安全 - API Key 本地存储,不上传 - 缓存数据本地存储,不上传 - 支持清除敏感数据 ## 开发计划 第 1 步:基础文件管理(MVP 核心) - 导入 SRT 文件 - 文件列表展示 - 基础 SRT 解析 - 打开文件进入阅读页面 - 显示台词列表(时间戳 + 内容) 可测试:能否导入多个文件,能否切换文件,能否正确解析 SRT 第 2 步:基础 UI 交互 - 台词卡片点击交互 - 解释弹窗(仅显示内容,暂时没有 AI) - 返回按钮导航 可测试:界面交互是否流畅,能否正常打开/关闭弹窗 第 3 步:AI 问答集成 - API Key 配置 - 调用 AI API - 点击台词获取解释 - 显示 AI 回复 可测试:能否正确调用 AI,能否显示回复 第 4 步:缓存系统 - 本地 SQLite 存储 - 缓存读取和保存 - 已提问台词标记 可测试:关闭 APP 再打开,缓存的解释是否还在 第 5 步:编辑和追问 - 用户编辑功能 - 追问功能(保持上下文) - 保存编辑内容 可测试:能否修改解释,能否继续追问 第 6 步:完善细节 - 错误处理 - 优化性能 - 缓存管理设置页面