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;
|
|||
|
|
}
|