diff --git a/lib/core/network/net_message_dispatcher.dart b/lib/core/network/net_message_dispatcher.dart index aa5acd80..85ffab40 100644 --- a/lib/core/network/net_message_dispatcher.dart +++ b/lib/core/network/net_message_dispatcher.dart @@ -65,7 +65,7 @@ class NetMessageDispatcher { /// 验证头部:data[0]=0xAB, data[1]=0xAA, data[2]=0x01 /// 检查状态位:data[5] == 0x01 表示回复成功 Stream onPathPlanningResponse() { - + final devicesCubit = sl(); debugPrint('[Dispatcher] 开始监听路径规划指令应答 (CMD: 0x01)'); @@ -98,15 +98,23 @@ class NetMessageDispatcher { ///取全局的路径规划发送实体 queue /// 发送下一个指令 移除上一条数据 var queue = _pathPlanningService.getQueue(); + ///更新完成jwd + var deviceAddPathPointModel = queue.first; + devicesCubit.setArrivedLocation( + deviceAddPathPointModel.latitude, + deviceAddPathPointModel.longitude + ); //去除上一条数据 queue.removeFirst(); + + /// _pathPlanningService.updateQueue(queue as List); _pathPlanningService.updateQueue(queue.toList()); debugPrint('📡 [Dispatcher] 准备触发下一个路径点发送,队列剩余:${queue.length}'); ///如果还剩0个数据 就停止发送 if (queue.length==0) { debugPrint('⚠️ [Dispatcher] 队列已空,停止发送'); - final devicesCubit = sl(); + // final devicesCubit = sl(); devicesCubit.finishWork(); return false; } diff --git a/lib/features/devices/presentation/bloc/devices_cubit.dart b/lib/features/devices/presentation/bloc/devices_cubit.dart index f85b1d57..189f6dd4 100644 --- a/lib/features/devices/presentation/bloc/devices_cubit.dart +++ b/lib/features/devices/presentation/bloc/devices_cubit.dart @@ -407,4 +407,19 @@ class DevicesCubit extends Cubit { void resetWorkStatus() { emit(state.copyWith(isFinshWork: false)); } + void setArrivedLocation(double latitude, double longitude) { + emit(state.copyWith(arriLatitude: latitude, arriLongitude: longitude)); + print('✅ [DevicesCubit] 更新已到达位置:Lat=$latitude, Lng=$longitude'); + } + + //获取已到达的点的经纬度 + (double, double) getArrivedLocation() { + return (state.arriLatitude ?? 0.0, state.arriLongitude ?? 0.0); + } + + // 重置已到达记录 + void resetArrivedLocation() { + emit(state.copyWith(arriLatitude: null, arriLongitude: null)); + print('🔄 [DevicesCubit] 已重置到达位置'); + } } diff --git a/lib/features/devices/presentation/bloc/devices_state.dart b/lib/features/devices/presentation/bloc/devices_state.dart index 92930be2..43fd0ba7 100644 --- a/lib/features/devices/presentation/bloc/devices_state.dart +++ b/lib/features/devices/presentation/bloc/devices_state.dart @@ -28,6 +28,9 @@ class DevicesState extends Equatable { final List? generatedPath; // 新增字段 final AppState appState; final bool isFinshWork; + final double? arriLatitude; + final double? arriLongitude; + @@ -43,7 +46,7 @@ class DevicesState extends Equatable { this.pathData, this.generatedPath, this.appState = AppState.none, - this.isFinshWork = false, + this.isFinshWork = false, this.arriLatitude, this.arriLongitude, }); // 使用 copyWith 方便局部更新状态 @@ -60,6 +63,8 @@ class DevicesState extends Equatable { List? generatedPath, AppState? appState, bool? isFinshWork, + double? arriLatitude, + double? arriLongitude, }) { return DevicesState( devices: devices ?? this.devices, @@ -74,6 +79,8 @@ class DevicesState extends Equatable { generatedPath: generatedPath ?? this.generatedPath, // 更新生成的路径数据 appState: appState ?? this.appState, // 更新应用状态 isFinshWork: isFinshWork ?? this.isFinshWork, + arriLatitude: arriLatitude ?? this.arriLatitude, + arriLongitude: arriLongitude ?? this.arriLongitude, ); } @@ -87,6 +94,8 @@ class DevicesState extends Equatable { operationType, generatedPath, appState, - isFinshWork + isFinshWork, + arriLatitude, + arriLongitude ]; }