65 lines
1.8 KiB
Dart
65 lines
1.8 KiB
Dart
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<String, dynamic> 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<Object?> get props => [
|
|
deviceName,
|
|
productId,
|
|
productName,
|
|
tenantId,
|
|
tenantName,
|
|
status,
|
|
activeTime,
|
|
deviceAlias,
|
|
isBind,
|
|
onlineStatus,
|
|
];
|
|
}
|