# rider **Repository Path**: eason_2022/rider ## Basic Information - **Project Name**: rider - **Description**: Flutter 骑行记录 App - 纯本地、不联网、开源学习 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-09-27 - **Last Updated**: 2026-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rider 骑行记录 App 一款纯本地的骑行轨迹记录工具,打开即用,不登录、不上传、数据全在手机。 > ⚠️ 本项目为学习用途,实时骑行记录在弱 GPS 信号下偶有问题(速度显示 0 / 轨迹冻结),欢迎提 Issue 交流。 ## ✨ 功能特性 - **实时轨迹记录**:GPS 采集、距离/速度/爬升实时计算,前台服务保活 - **秒开定位**:本地缓存 + 系统兜底 + 后台刷新,打开即显上次位置 - **随时可开始**:点一下立即计时,无定位权限也能先记时长 - **罗盘朝向跟随**:地图方向跟着手机走 - **拍照 / 文字记录**:骑行中随手拍、随手记,自动带时间地点速度 - **历史 & 轨迹回放**:1x~32x 倍速回放,镜头跟随 - **模拟数据**:4 种场景一键生成,方便测试 - **CSV 导出**:单次骑行数据导出,系统分享 - **运行日志**:分级日志,可查看 / 导出 / 清除 ## 📱 截图 > 待补充:骑行主页、历史列表、轨迹回放、设置页 ## 🛠 技术栈 | 类别 | 方案 | 版本 | |---|---|---| | 框架 | Flutter + Dart | SDK ^3.11.1 | | 状态管理 | provider | ^6.1.2 | | 本地数据库 | sqflite (SQLite) | ^2.4.1 | | GPS 定位 | geolocator | ^14.0.2 | | 地图 | flutter_map + 高德瓦片 | ^8.1.1 | | 后台保活 | flutter_foreground_task | ^8.17.0 | | 罗盘 | flutter_compass | ^0.8.0 | | 拍照 | image_picker | ^1.0.4 | | 导出分享 | share_plus | ^13.3.0 | | 本地缓存 | shared_preferences | ^2.3.0 | ## 📁 项目结构 ``` lib/ ├── main.dart # 应用入口:MultiProvider + 3 Tab ├── core/ # 基础设施(常量/主题/工具) ├── data/ # 数据层(数据库/模型/Repository) ├── domain/ # 领域模型 └── features/ # 功能模块 ├── recording/ # 骑行记录 ├── history/ # 历史记录 & 回放 ├── settings/ # 设置 & 日志 └── simulation/ # 模拟数据 ``` ## 🚀 本地构建 ```bash # 克隆仓库(Gitee 主仓库,国内访问快) git clone https://gitee.com/eason_2022/rider.git cd rider # (可选)GitHub 镜像 git clone https://github.com/eshinef/rider.git # 安装依赖 flutter pub get # 运行(连接真机或模拟器) flutter run # 构建 APK flutter build apk --release ``` ## 📋 已知问题 - 实时骑行页在弱 GPS 信号下偶发速度显示为 0,或一段时间后数值冻结、轨迹不再更新 - 根因:`_onPositionUpdate` 中 `position.accuracy > 30m` 会整帧丢弃 - 修复方向:放宽精度硬门槛,或改为「精度差时仍更新 UI、只是不计入距离」 - 当前选择先公开源码暂不修复,欢迎提 PR ## 📄 开源协议 本项目采用 MIT 协议,详见 [LICENSE](LICENSE)。 ## ⚠️ 免责声明 本项目仅供学习交流,轨迹精度不可用于专业导航;数据全部本地存储,不收集、不上传任何个人信息。