# 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>> 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 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 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