import 'package:equatable/equatable.dart'; import '../../../../core/utils/json_safe.dart'; class DeviceEntity extends Equatable { final String deviceName; final int productId; final String productName; final int tenantId; final String tenantName; final int status; final String? activeTime; final String? deviceAlias; final int isBind; // 是否被绑定过 final int onlineStatus; // 在线状态 DeviceEntity({ required this.deviceName, required this.productId, required this.productName, required this.tenantId, required this.tenantName, this.status = 0, this.activeTime, this.deviceAlias, this.isBind = 0, this.onlineStatus = 0, }); factory DeviceEntity.fromJson(Map json) { return DeviceEntity( deviceName: JsonSafe.asString(json['deviceName']), productId: JsonSafe.asInt(json['productId'], -1), productName: JsonSafe.asString(json['productName'], "割草机产品MC700"), tenantId: JsonSafe.asInt(json['tenantId']), tenantName: JsonSafe.asString(json['tenantName']), status: JsonSafe.asInt(json['status']), activeTime: JsonSafe.asStringOrNull(json['activeTime']), deviceAlias: JsonSafe.asStringOrNull(json['deviceAlias']), isBind: JsonSafe.asInt(json['isBind']), onlineStatus: JsonSafe.asInt(json['onlineStatus']), ); } String get displayName => (deviceAlias != null && deviceAlias!.isNotEmpty) ? deviceAlias! : (deviceName.isNotEmpty ? deviceName : "未知设备"); // 辅助方法:判断是否在线 bool get isOnline => onlineStatus == 1; @override List get props => [ deviceName, productId, productName, tenantId, tenantName, status, activeTime, deviceAlias, isBind, onlineStatus, ]; }