- Android端注入按键时显式设置SOURCE_KEYBOARD,修复IME丢弃事件导致输入框无法输入文字的问题 - Flutter端新增Flutter逻辑键到Android keyCode的转换映射,避免功能键误触发 - 重构RemoteController,分离信令连接与远程控制逻辑,支持设备列表选择与配对码兑换 - AuthRepository接口新增getBindings、getOnlineDevices、redeemPairingCode方法 - DioAuthRepository实现401自动刷新token重试机制 - ConnectionSessionState扩展设备列表、在线状态、配对码等状态字段
64 lines
1.9 KiB
Dart
64 lines
1.9 KiB
Dart
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<String, dynamic> json) =>
|
||
_$BindingDeviceFromJson(json);
|
||
|
||
Map<String, dynamic> 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,
|
||
);
|
||
}
|