35 lines
1.1 KiB
Dart
35 lines
1.1 KiB
Dart
// 功能:解析本人设备分组及其公开设备标识;版本:1.0.0。
|
||
import 'client_models.dart';
|
||
|
||
/// 设备分组只表达用户自定义归类,不代表设备在线或可控制。
|
||
class DeviceGroup {
|
||
const DeviceGroup({
|
||
required this.identity,
|
||
required this.name,
|
||
required this.sortNo,
|
||
required this.deviceIdentities,
|
||
});
|
||
|
||
final String identity;
|
||
final String name;
|
||
final int sortNo;
|
||
final Set<String> deviceIdentities;
|
||
|
||
factory DeviceGroup.fromJson(Map<String, Object?> json) => DeviceGroup(
|
||
identity: json['identity'] as String? ?? '',
|
||
name: json['name'] as String? ?? '',
|
||
sortNo: (json['sort_no'] as num?)?.toInt() ?? 0,
|
||
deviceIdentities: {
|
||
for (final value in json['device_identities'] as List? ?? const [])
|
||
if (value is String && value.isNotEmpty) value,
|
||
},
|
||
);
|
||
}
|
||
|
||
/// 同一次页面刷新读取的设备与分组快照,避免两次渲染状态互相错配。
|
||
class DeviceCatalog {
|
||
const DeviceCatalog({required this.devices, required this.groups});
|
||
final List<ClientRecord> devices;
|
||
final List<DeviceGroup> groups;
|
||
}
|