# reminder **Repository Path**: mailboxzhang2005/reminder ## Basic Information - **Project Name**: reminder - **Description**: 烧饭时钟提醒APP - **Primary Language**: Dart - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-26 - **Last Updated**: 2026-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 关火了吗 APP > 一款帮助用户避免烧饭时忘记关火的安全提醒应用 ## 项目简介 **关火了吗**是一款专为日常烹饪场景设计的定时提醒应用。在做饭过程中,用户经常会因为忙于其他事情而忘记关火,导致饭菜烧糊,甚至可能引发火灾。本应用通过简单易用的定时提醒功能,帮助用户在烹饪时设置提醒,到时间后及时通知用户关火,有效避免安全事故。 ## 应用截图
主页界面 设置时间 倒计时 设置页面
主页界面
快速设置定时器,查看等级和金币
设置时间
直观的时间选择界面
倒计时
实时倒计时显示和控制
设置页面
个性化设置和功能配置
> 更多详细介绍请查看 [软件介绍文档](intro/软件介绍.md) ## 核心特性 ### 基础功能 - **烧饭定时提醒** - 快速设置定时器(5/10/15/30分钟或自定义时间),到时间后通知提醒关火 - **多种显示模式** - 支持前台服务通知、悬浮窗小球、应用内显示三种模式 - **自定义提醒声音** - 提供多种提醒铃声选择,支持音频预览和自定义音频 - **实时倒计时** - 通知栏实时显示剩余时间,悬浮窗带进度环显示 ### 高级功能 - **等级系统** - 根据使用次数提升等级,从"新手厨师"到"厨神"(10个等级) - **安全等级** - 基于成功关火次数评定安全星级(1-5星) - **统计数据** - 详细记录使用次数、总时长、成功率等数据 - **主题商店** - 使用虚拟货币购买不同主题皮肤(8种主题) - **背景商店** - 购买和切换应用背景图片(多种背景可选) - **虚拟货币系统** - 通过每日签到、升级奖励等方式赚取金币 - **老人模式** - 提供大字体、大按钮、大图标的适老化界面 ## 技术栈 - **框架**: Flutter 3.10.7 - **语言**: Dart SDK >= 3.10.7 - **状态管理**: Provider 6.1.1 - **本地存储**: SharedPreferences 2.2.2 - **通知系统**: flutter_local_notifications 17.0.0 - **音频播放**: audioplayers 5.2.1 - **路由管理**: go_router 13.0.0 - **权限管理**: permission_handler 11.1.0 - **UI组件**: flutter_slidable 3.0.1 - **图标库**: font_awesome_flutter 10.6.0, cupertino_icons 1.0.8 - **国际化**: intl 0.19.0 ## 项目架构 ### 目录结构 ``` lib/ ├── main.dart # 应用入口 ├── models/ # 数据模型 │ ├── timer_model.dart # 定时器模型 │ ├── user_stats_model.dart # 用户统计模型 │ ├── sound_model.dart # 声音模型 │ ├── theme_model.dart # 主题模型 │ └── background_model.dart # 背景模型 ├── providers/ # 状态管理 │ ├── timer_provider.dart # 定时器状态 │ ├── user_stats_provider.dart # 用户统计状态 │ ├── theme_provider.dart # 主题状态 │ ├── background_provider.dart # 背景状态 │ ├── elderly_mode_provider.dart # 老人模式状态 │ └── purchase_provider.dart # 购买系统状态 ├── services/ # 业务服务 │ ├── timer_service.dart # 定时器服务 │ ├── notification_service.dart # 通知服务 │ ├── audio_service.dart # 音频服务 │ └── storage_service.dart # 存储服务 ├── screens/ # 页面 │ ├── home_screen.dart # 主页 │ ├── stats_screen.dart # 统计页面 │ ├── settings_screen.dart # 设置页面 │ ├── theme_store_screen.dart # 主题商店 │ ├── background_store_screen.dart # 背景商店 │ └── about_screen.dart # 关于页面 ├── widgets/ # 自定义组件 │ ├── circular_timer.dart # 圆形定时器 │ ├── stats_card.dart # 统计卡片 │ ├── level_badge.dart # 等级徽章 │ └── time_picker_dialog.dart # 时间选择器 └── utils/ # 工具类 ├── level_calculator.dart # 等级计算 └── time_formatter.dart # 时间格式化 ``` ### 核心服务 #### TimerService - 定时器核心逻辑 - 倒计时管理 - 定时器状态控制 #### NotificationService - 前台服务通知 - 实时倒计时显示 - 通知权限管理 #### AudioService - 提醒音频播放 - 音频预览功能 - 自定义铃声支持 #### StorageService - 本地数据持久化 - 用户设置存储 - 统计数据管理 ## 快速开始 ### 环境要求 - Flutter SDK >= 3.10.7 - Dart SDK >= 3.10.7 - Android Studio / Xcode(用于移动端开发) - Git ### 安装依赖 ```bash flutter pub get ``` ### 运行应用 ```bash # 开发模式运行 flutter run # 指定设备运行 flutter run -d # 查看可用设备 flutter devices ``` ### 构建应用 #### 方法一:使用自动化脚本(推荐) **Windows:** ```bash cd scripts build_release.bat 1.0.0+1 ``` **Linux/Mac:** ```bash cd scripts chmod +x build_release.sh ./build_release.sh 1.0.0+1 ``` 自动化脚本会完成以下操作: 1. 清理旧构建 2. 获取依赖 3. 运行代码检查 4. 构建发布版 APK 5. 创建发布目录 `release/v1.0.0/` 6. 重命名 APK 为 `关火了吗-v1.0.0-1.apk` 7. 生成构建信息文件 8. 复制发行说明文档 #### 方法二:手动构建 ```bash # Android APK flutter build apk --release # Android App Bundle flutter build appbundle --release # iOS(仅支持 macOS) flutter build ios --release ``` #### 方法三:指定版本号构建 ```bash # 不修改 pubspec.yaml,直接指定版本号 flutter build apk --release --build-name=1.0.0 --build-number=1 ``` 详细的版本管理和发布流程请查看 [VERSION_GUIDE.md](VERSION_GUIDE.md) **注意**: iOS 应用只能在 macOS 上构建,因为需要 Xcode 和 Apple 的编译工具链。 #### 在 Windows 上构建 iOS 版本 如果你使用 Windows 开发,可以通过 GitHub Actions 自动构建 iOS 版本: **方式一:手动触发构建** 1. 将代码推送到 GitHub 仓库 2. 访问仓库的 Actions 页面 3. 选择 "iOS Build" 工作流 4. 点击 "Run workflow" 按钮手动触发构建 5. 构建完成后,在 Artifacts 中下载构建产物 **方式二:通过 Tag 自动触发** ```bash # 创建并推送版本标签 git tag v1.0.0 git push origin v1.0.0 ``` 推送 tag 后,GitHub Actions 会自动开始构建 iOS 版本。 **查看构建结果** - 访问仓库的 Actions 页面查看构建状态 - 构建成功后,在 Artifacts 中下载 `ios-build-xxx` 文件 - 构建产物保留 30 天 **配置代码签名(可选)** 如果需要构建可安装的 IPA 文件,需要配置 Apple 开发者证书: 1. 在仓库的 Settings > Secrets and variables > Actions 中添加以下 secrets: - `APPLE_CERTIFICATE_BASE64`: Apple 开发者证书(Base64 编码) - `APPLE_CERTIFICATE_PASSWORD`: 证书密码 - `APPLE_PROVISIONING_PROFILE_BASE64`: Provisioning Profile(Base64 编码) 2. 取消 [.github/workflows/ios-build.yml](.github/workflows/ios-build.yml) 中签名相关步骤的注释 详细配置说明请参考 GitHub Actions 工作流文件:[.github/workflows/ios-build.yml](.github/workflows/ios-build.yml) ## 主要功能说明 ### 定时器功能 - **快速设置**: 提供 5/10/15/30 分钟快捷按钮 - **自定义时间**: 支持自定义分钟数设置 - **多种显示模式**: - 前台服务通知:通知栏实时显示倒计时 - 悬浮窗小球:可拖动的圆形悬浮窗 - 应用内显示:在应用内查看倒计时 ### 用户成长系统 - **等级系统**: 10 个等级,从"新手厨师"到"厨神" - **经验值**: 每次使用定时器获得经验 - **升级奖励**: 升级时获得虚拟货币奖励 - **安全星级**: 根据成功关火次数评定 1-5 星 ### 虚拟货币与商店 - **金币获取**: - 每日签到奖励 - 等级提升奖励 - 完成定时任务奖励 - **主题商店**: 8 种精美主题可供购买 - **背景商店**: 多种背景图片可供选择 ### 辅助功能 - **老人模式**: - 字体放大 1.3 倍 - 按钮高度增加至 60dp - 图标尺寸增加至 32dp - 更易于老年人使用 ## 开发指南 ### 代码规范 - 遵循 Flutter 官方代码规范 - 使用 `flutter_lints` 进行代码检查 - 所有 Provider 必须继承 `ChangeNotifier` - 服务类使用单例模式或依赖注入 ### 测试 ```bash # 运行单元测试 flutter test # 运行集成测试 flutter test integration_test # 代码覆盖率 flutter test --coverage ``` ### 调试技巧 - 使用 Flutter DevTools 进行性能分析 - 通过 `flutter logs` 查看实时日志 - 使用 `debugPrint` 输出调试信息 ## 版本管理 ### 当前版本 - **版本号**: 1.0.0+1 - **应用名称**: 关火了吗 - **包名**: com.flameguard.reminder ### 版本号配置 版本号在 [pubspec.yaml](pubspec.yaml) 中配置: ```yaml version: 1.0.0+1 ``` 格式说明: - `1.0.0` - 版本名称(versionName),用户可见 - `1` - 构建号(versionCode),内部使用,每次发布必须递增 ### 版本号规则 遵循 [语义化版本](https://semver.org/lang/zh-CN/) 规范: - **主版本号(Major)**: 不兼容的 API 修改 - **次版本号(Minor)**: 向下兼容的功能性新增 - **修订号(Patch)**: 向下兼容的问题修正 示例: - `1.0.0+1` - 首次发布 - `1.0.1+2` - Bug 修复 - `1.1.0+3` - 新功能 - `2.0.0+4` - 重大更新 详细说明请查看 [VERSION_GUIDE.md](VERSION_GUIDE.md) ## 文档 - [VERSION_GUIDE.md](VERSION_GUIDE.md) - 版本管理和发布指南 - [CHANGELOG.md](CHANGELOG.md) - 更新日志 - [RELEASE_NOTES.md](RELEASE_NOTES.md) - 发行说明 - [软件介绍](intro/软件介绍.md) - 详细的应用介绍 ## 版本历史 ### v1.0.0 (当前版本) **核心功能** - ✅ 基础定时提醒功能 - ✅ 多种显示模式(通知栏、悬浮窗、应用内) - ✅ 自定义提醒声音 - ✅ 用户统计和等级系统 - ✅ 主题商店和虚拟货币系统 - ✅ 背景商店 - ✅ 老人模式(适老化设计) - ✅ 每日签到系统 **技术特性** - Provider 状态管理 - 本地数据持久化 - 前台服务通知 - 音频播放系统 - 权限管理 ## 常见问题 ### 通知不显示? 1. 检查应用通知权限是否开启 2. 确认系统勿扰模式未开启 3. 检查应用是否被系统省电策略限制 ### 悬浮窗无法显示? 1. 检查悬浮窗权限是否授予 2. 部分手机需要在设置中手动开启悬浮窗权限 3. 重启应用后重试 ### 音频无法播放? 1. 检查音频文件是否存在于 `assets/sounds/` 目录 2. 确认 `pubspec.yaml` 中已正确配置 assets 3. 重新运行 `flutter pub get` ## 贡献指南 欢迎提交 Issue 和 Pull Request! 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 许可证 本项目仅供学习和个人使用。 ## 联系方式 如有问题或建议,欢迎通过以下方式联系: - 提交 Issue - 发送邮件至项目维护者 --- **关火了吗** - 让烹饪更安全,让生活更安心 🔥