Files
ShowenV2/.showen/FLUTTER_P0_TASKS.md
showen d30c111c71 feat: M1.1 完成 + M1.2 启动 — 全量更新
M1.1 收尾:
- 24项 P0/P1/P2 bug 修复 (Rust 107 tests + Flutter 15 tests)
- Flutter App v0.3: cupertino_icons 修复, 单元测试, 调试面板, APK 52.6MB
- 示例插件完善: manifest.json + 请求/响应示范 + 7个测试
- API 文档重写 (以 routes.rs 为唯一权威)
- MILESTONES.md 更新至 100%

M1.2 启动:
- P0: 插件管理 API 闭环 (handle_manager_message Custom 分支 + broadcast_plugin_states)
- ServiceManager 集成测试 8/8 (tests/m1_2_service_manager.rs)
- M1.2 测试计划 (docs/M1.2_TEST_PLAN.md, 18个E2E场景)
- 动态插件系统: auto_rollback + version_manager GC + 路径穿越防护

总计: Rust 115/115 测试, Flutter 15/15 测试, 零 warning

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 18:12:42 +08:00

86 lines
3.2 KiB
Markdown
Raw Permalink 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 P0/P1 优化任务单
> 派发时间: 2026-03-14 07:00
> 派发人: 陈逸飞 (CEO)
> 状态: 执行中
## 全局约束
- flutter sdk: /home/showen/flutter-sdk/bin/flutter
- 后端端口: 5000 (不是 8080)
- 完成后必须运行 flutter analyze 确认零错误
- 完成后在 .showen/TEAM_CHAT.md 汇报结果
- 有冲突找对应文件负责人协调
## 任务分配
### T1 - 王浩然: 新建 device_storage_service.dart
- 文件: clients/flutter/lib/services/device_storage_service.dart (新建)
- 依赖: shared_preferences (已添加到 pubspec.yaml)
- 功能:
- saveDevice(String ip, int port, String? name) — 保存到 SharedPreferences
- Future<List<Map<String,dynamic>>> getDevices() — 获取设备列表
- removeDevice(String ip) — 删除
- getLastDevice() — 获取最后使用的设备
- 最多保存10台按最近使用时间排序
- key: 'showen_device_list', JSON array 格式
- 状态: [x] 待执行
### T2 - 王浩然: 修改 device_provider.dart
- 文件: clients/flutter/lib/providers/device_provider.dart
- 依赖: T1 完成
- 修改:
- 构造函数接收 DeviceStorageService
- 新增 List<Map> deviceList 属性
- init() 方法从 storage 加载上次设备并自动连接
- switchDevice(ip, port) 保存到 storage + 重连 HTTP/WS
- 默认 IP: 127.0.0.1, 默认端口: 5000
- 状态: [ ] 待执行
### T3 - 赵雨薇: 修改 web_socket_service.dart
- 文件: clients/flutter/lib/services/web_socket_service.dart
- 修改:
- 重连改指数退避: 初始2s, 翻倍, 最大60s, 成功后重置
- 新增 enum ConnectionState { connected, connecting, disconnected }
- 新增 Stream<ConnectionState> connectionStateStream
- 新增 int retryCount getter
- 新增 manualReconnect() 方法
- 状态: [x] 待执行
### T4 - 赵雨薇: 新建 connection_status_banner.dart
- 文件: clients/flutter/lib/widgets/connection_status_banner.dart (新建)
- 依赖: T3 完成
- 功能:
- 监听 WebSocketService connectionStateStream
- connected → 不显示 (高度0)
- connecting → 黄色横幅 "正在重连...(第N次)"
- disconnected → 红色横幅 "连接断开" + "重试"按钮
- AnimatedContainer 动画
- 状态: [ ] 待执行
### T5 - 李思琪: 修改 settings_screen.dart 添加视频管理
- 文件: clients/flutter/lib/screens/settings_screen.dart
- 修改:
- 新增"视频管理"Section: 调用 getVideos(), ListView 展示, 删除按钮+确认弹窗
- 配置区域加"复制JSON"按钮
- 状态: [x] 已完成
### T6 - 李思琪: 给 playback/trigger/network 添加下拉刷新
- 文件: playback_screen.dart, trigger_screen.dart, network_screen.dart
- 修改: 用 RefreshIndicator 包裹各页面主体
- 状态: [x] 已完成
### T7 - 集成: 修改 main.dart + app_shell.dart
- 文件: clients/flutter/lib/main.dart, clients/flutter/lib/screens/app_shell.dart
- 依赖: T1-T4 全部完成
- 修改:
- main.dart: 不 hardcode IP, 从 DeviceStorageService 加载
- app_shell.dart: body 顶部加 ConnectionStatusBanner
- 负责人: 最后由 PM 或 CEO review 后合并
- 状态: [ ] 待执行
## 执行顺序
Round 1 (并行): T1, T3, T5, T6
Round 2 (并行): T2, T4
Round 3: T7 (集成)
Round 4: flutter analyze + 编译 APK