diff --git a/lib/core/network/net_message_dispatcher.dart b/lib/core/network/net_message_dispatcher.dart index 1e46ebf8..d6e9c986 100644 --- a/lib/core/network/net_message_dispatcher.dart +++ b/lib/core/network/net_message_dispatcher.dart @@ -95,6 +95,17 @@ class NetMessageDispatcher { ///取全局的路径规划发送实体 queue /// 发送下一个指令 移除上一条数据 var queue = _pathPlanningService.getQueue(); + // 🔥 关键:必须先检查空队列! + if (queue.isEmpty) { + devicesCubit.finishWork(); + Future.delayed(Duration(seconds: 1), () { + devicesCubit.resetWorkStatus(); + }); + // 手动停止 + //routePlanningRepository.stopRoutePlanning(); + debugPrint('⚠️ [Dispatcher] 队列已经为空,跳过本次响应处理'); + return false; + } ///更新完成jwd var deviceAddPathPointModel = queue.first; var d = deviceAddPathPointModel.latitude; @@ -106,20 +117,26 @@ class NetMessageDispatcher { debugPrint("准确更新完成的路径点经纬度,$d,$e"); //去除上一条数据 queue.removeFirst(); - - /// _pathPlanningService.updateQueue(queue as List); _pathPlanningService.updateQueue(queue.toList()); - debugPrint('📡 [Dispatcher] 准备触发下一个路径点发送,队列剩余:${queue.length}'); + DateTime now = DateTime.now(); + String timeStr = "${now.hour.toString().padLeft(2, '0')}:" + "${now.minute.toString().padLeft(2, '0')}:" + "${now.second.toString().padLeft(2, '0')}"; + + debugPrint('📡${timeStr} [Dispatcher] 准备触发下一个路径点发送,队列剩余:${queue.length}'); ///如果还剩0个数据 就停止发送 if (queue.length==0) { debugPrint('⚠️ [Dispatcher] 队列已空,停止发送'); + // final devicesCubit = sl(); devicesCubit.finishWork(); Future.delayed(Duration(seconds: 1), () { devicesCubit.resetWorkStatus(); }); - + // 手动停止 + routePlanningRepository.stopRoutePlanning(); + debugPrint('⚠️ [Dispatcher] 队列已空,发送停止指令已发送'); return false; } routePlanningRepository.startRoutePlanning(queue); diff --git a/lib/features/devices/services/path_planning_service.dart b/lib/features/devices/services/path_planning_service.dart index c5bb3f49..e8f0e835 100644 --- a/lib/features/devices/services/path_planning_service.dart +++ b/lib/features/devices/services/path_planning_service.dart @@ -70,8 +70,11 @@ class PathPlanningService { int get length => locationQueue.length; /// 获取当前队列(供 Cubit 使用) - Queue getQueue() { - return Queue.of(locationQueue); - } + // Queue getQueue() { + // return Queue.of(locationQueue); + // } + Queue getQueue() { + return locationQueue; // 直接返回引用 + } }