Files
flutterApp/lib/features/devices/presentation/bloc/devices_state.dart
Songzex b6e4189573 完成路及规划的作业的开始工作成功.
完成路径规划的暂停功能的对接
完成路径规划的继续功能的对接
完成路径规划的停止功能的对接
2026-03-11 10:01:36 +08:00

88 lines
2.7 KiB
Dart

import 'package:equatable/equatable.dart';
import 'package:maibu_satabot_v2/features/devices/domain/entities/device_entity.dart';
import '../../data/models/device_add_path_point_model.dart';
enum DeviceOperationType {
none, // 无操作
unbind, // 解绑设备
updateName, // 修改设备名称
}
enum AppState {
none, //无作业状态
routePlanning, //正在规划路径
}
class DevicesState extends Equatable {
final List<DeviceEntity> devices; // 名下所有设备列表
final DeviceEntity? selectedDevice; // 当前主界面选中的/操作的设备
final bool isLoading; // 是否正在加载
final String? errorMessage; // 错误信息
final double? deviceLatitude; // 新增字段
final double? deviceLongitude; // 新增字段
final List<Map<String, dynamic>>? workRecords;
final DeviceOperationType operationType; // 标记当前操作类型
final List<Map<String, dynamic>>? pathData;
final List<DeviceAddPathPointModel>? generatedPath; // 新增字段
final AppState appState;
const DevicesState({
this.devices = const [],
this.selectedDevice,
this.isLoading = false,
this.errorMessage,
this.deviceLatitude,
this.deviceLongitude,
this.workRecords,
this.operationType = DeviceOperationType.none, // 默认无操作
this.pathData,
this.generatedPath,
this.appState = AppState.none,
});
// 使用 copyWith 方便局部更新状态
DevicesState copyWith({
List<DeviceEntity>? devices,
DeviceEntity? selectedDevice,
bool? isLoading,
String? errorMessage,
double? deviceLatitude,
double? deviceLongitude,
List<Map<String, dynamic>>? workRecords,
DeviceOperationType? operationType,
List<Map<String, dynamic>>? pathData,
List<DeviceAddPathPointModel>? generatedPath,
AppState? appState,
}) {
return DevicesState(
devices: devices ?? this.devices,
selectedDevice: selectedDevice ?? this.selectedDevice,
isLoading: isLoading ?? this.isLoading,
errorMessage: errorMessage, // 错误信息通常每次更新都要重新赋值或清空
deviceLatitude: deviceLatitude ?? this.deviceLatitude,
deviceLongitude: deviceLongitude ?? this.deviceLongitude,
pathData: pathData ?? this.pathData,
workRecords: workRecords ?? this.workRecords,
operationType: operationType ?? this.operationType, // 更新操作类型
generatedPath: generatedPath ?? this.generatedPath, // 更新生成的路径数据
appState: appState ?? this.appState, // 更新应用状态
);
}
@override
List<Object?> get props => [devices, selectedDevice, isLoading,
errorMessage,
deviceLatitude,
deviceLongitude,
workRecords,
pathData,
operationType,
generatedPath,
appState,
];
}