import 'package:equatable/equatable.dart'; import 'package:maibu_satabot_v2/features/remote_control/data/models/running_status_model.dart'; import '../../domain/entities/machine_control_status_entity.dart'; enum RemoteControlStatus { initial, controlling, error } enum ControlMode { TCP, BLE, LOCAL, NONE, OTHER } class RemoteControlState extends Equatable { final RemoteControlStatus status; final MachineControlStatusEntity controlEntity; // 控制业务实体 final RunningStatusModel runningStatusModel; //状态业务实体 final String? errorMessage; final bool hasPermission; // 是否获得了 0x12 权限 final bool isEmergency; final bool isLocked; final int ping; final int battery; final int voltage; final String permissionPlatform; final String currentPlatform; final bool showPermissionRequestDialog; final bool showLeftPip; final bool showRightPip; final String obstacleFlag; //障碍物标志位 const RemoteControlState({ this.status = RemoteControlStatus.initial, required this.controlEntity, this.errorMessage, this.hasPermission = false, this.isEmergency = false, this.isLocked = false, this.ping = 0, this.battery = 0, this.voltage = 0, this.permissionPlatform = '', this.currentPlatform = '', this.showPermissionRequestDialog = false, this.showLeftPip = true, this.showRightPip = true, this.obstacleFlag = '', required this.runningStatusModel, }); // 方便 UI 更新部分属性 RemoteControlState copyWith({ RemoteControlStatus? status, MachineControlStatusEntity? controlEntity, String? errorMessage, bool? hasPermission, bool? isEmergency, bool? isLocked, int? ping, int? battery, int? voltage, String? permissionPlatform, String? currentPlatform, bool? showPermissionRequestDialog, bool? showLeftPip, bool? showRightPip, RunningStatusModel? runningStatusModel, String? obstacleFlag, }) { return RemoteControlState( status: status ?? this.status, controlEntity: controlEntity ?? this.controlEntity, errorMessage: errorMessage ?? this.errorMessage, hasPermission: hasPermission ?? this.hasPermission, isEmergency: isEmergency ?? this.isEmergency, isLocked: isLocked ?? this.isLocked, ping: ping ?? this.ping, battery: battery ?? this.battery, voltage: voltage ?? this.voltage, permissionPlatform: permissionPlatform ?? this.permissionPlatform, currentPlatform: currentPlatform ?? this.currentPlatform, showPermissionRequestDialog: showPermissionRequestDialog ?? this.showPermissionRequestDialog, showLeftPip: showLeftPip ?? this.showLeftPip, showRightPip: showRightPip ?? this.showRightPip, runningStatusModel: runningStatusModel ?? this.runningStatusModel, obstacleFlag: obstacleFlag ?? this.obstacleFlag, ); } @override List get props => [ status, controlEntity, errorMessage, hasPermission, isEmergency, isLocked, ping, battery, voltage, permissionPlatform, currentPlatform, showPermissionRequestDialog, showLeftPip, showRightPip, runningStatusModel, obstacleFlag, ]; }