Files
flutterApp/lib/features/devices/presentation/bloc/devices_state.dart
2026-02-28 17:06:14 +08:00

77 lines
2.5 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, // 修改设备名称
}
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; // 新增字段
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,
});
// 使用 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,
}) {
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, // 更新生成的路径数据
);
}
@override
List<Object?> get props => [devices, selectedDevice, isLoading,
errorMessage,
deviceLatitude,
deviceLongitude,
workRecords,
pathData,
operationType,
generatedPath,
];
}