Files
ShowenV2/clients/flutter/TODO.md
showen 8ed9cb2d9d feat: Flutter APK 编译成功 + Gradle 配置修复 + APK 下载部署 + 待优化清单
- 通过 qemu-user-static 实现 ARM64 主机编译 Android APK (51MB)
- 修复 Gradle: Aliyun 镜像 + PREFER_SETTINGS + JVM 内存 1536M
- 部署 APK 到 configs/downloads/, Web 下载接口已验证 (HTTP 200)
- 新增 Flutter TODO.md: 10项待优化 (P0/P1/P2 分级)
- 新增 pm_soul.md, 更新 routes.rs APK 下载路由

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 06:43:55 +08:00

65 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Flutter App 待优化清单
> 生成时间: 2026-03-14
> 当前完成度: ~68%, APK 已编译 (51MB)
## P0 — 阻塞上线
### 1. 设备 IP 持久化 + 多设备支持
- `main.dart:20` hardcoded `127.0.0.1:8080`,重启丢失
- 需要: SharedPreferences 存储设备历史 (最近10台)
- 需要: 顶栏设备切换下拉菜单
- 需要: 连接前验证 `/api/status` 可达性
### 2. WebSocket 重连增强
- `web_socket_service.dart` 固定 2 秒重连,无退避
- 需要: 指数退避 (2s→4s→8s→16s→max 60s)
- 需要: 顶层连接状态横幅 (Reconnecting... / Offline)
- 需要: 手动重试按钮
### 3. HTTP baseUrl 动态化
- HttpApiService/WebSocketService 的 URL 需跟随设备切换动态更新
- DeviceProvider 应成为全局设备上下文,驱动所有服务重连
## P1 — 应该有
### 4. 视频管理 UI (Settings 页)
- API 已有 getVideos(),但 UI 无视频列表展示
- 需要: 视频列表 + 删除确认弹窗
- 需要: 刷新按钮
### 5. 配置 JSON 编辑器
- 当前只有表单模式,缺 raw JSON 编辑模式
- 需要: 切换按钮 (表单/JSON)
- 需要: 复制到剪贴板
### 6. BLE 简易控制命令
- PRD §8.6 要求: 近场调试用 play/pause/next/prev BLE 按钮
- Network 页添加 BLE 控制区域
### 7. 全页面下拉刷新
- 目前只有 Home 页有 RefreshIndicator
- Playback / Trigger / Network / Settings 都需要
## P2 — 锦上添花
### 8. 视频上传 UI
- 需要 file_picker 依赖
- 进度条 + multipart upload
### 9. 单元测试 & Widget 测试
- 目前零测试覆盖
- 优先: models 解析、HttpApiService 错误处理、核心页面交互
### 10. 调试日志面板
- 本地事件日志查看器
- BLE/WebSocket/HTTP 事件时间线
## 已知技术债
- WebSocket 事件解析假设固定结构,缺 schema 校验
- API 响应全用 `Map<String, dynamic>`,缺类型安全
- 无依赖注入框架
- 无错误边界 Widget (ErrorWidget.builder)
- Gradle/Kotlin/AGP 版本偏旧 (有 warning可用 `--android-skip-build-dependency-validation` 绕过)