import 'package:json_annotation/json_annotation.dart'; part 'binding_device.g.dart'; /// 主控端已绑定的被控设备(对应服务端 DeviceBinding / 在线设备列表)。 /// /// 字段对齐 [WebRTCSignalServer] 的 [DeviceBinding] 与 OnDeviceDto, /// 以及 Android 控制端的 [BindingItem],供用户在列表中选取并连接。 @JsonSerializable(fieldRename: FieldRename.snake) class BindingDevice { const BindingDevice({ required this.deviceUid, this.name, this.online = false, this.authType = 'NONE', this.lastSeen, }); /// 被控端设备唯一标识(连接信令时使用)。 /// /// 服务端 [DeviceBinding.deviceUid](必返回,缺失时兜底空串以保证列表可用)。 @JsonKey(name: 'deviceUid') final String deviceUid; /// 设备展示名称,对应服务端 [DeviceBinding.alias],可为 null。 /// /// 未设置别名时回退为设备标识,避免空名称影响展示与选择。 @JsonKey(name: 'alias') final String? name; /// 是否在线(信令网络中活跃)。 final bool online; /// 连接鉴权方式:NONE / PASSWORD / CODE。 /// /// 服务端字段为 [DeviceBinding.authType],缺失时默认 NONE。 @JsonKey(name: 'authType', defaultValue: 'NONE') final String authType; /// 最近一次在线时间戳(毫秒)。 @JsonKey(name: 'lastSeen') final int? lastSeen; factory BindingDevice.fromJson(Map json) => _$BindingDeviceFromJson(json); Map toJson() => _$BindingDeviceToJson(this); BindingDevice copyWith({ String? deviceUid, String? name, bool? online, String? authType, int? lastSeen, }) => BindingDevice( deviceUid: deviceUid ?? this.deviceUid, name: name ?? this.name, online: online ?? this.online, authType: authType ?? this.authType, lastSeen: lastSeen ?? this.lastSeen, ); }