feat(remote): 修复键盘输入映射并重构连接流程

- Android端注入按键时显式设置SOURCE_KEYBOARD,修复IME丢弃事件导致输入框无法输入文字的问题
- Flutter端新增Flutter逻辑键到Android keyCode的转换映射,避免功能键误触发
- 重构RemoteController,分离信令连接与远程控制逻辑,支持设备列表选择与配对码兑换
- AuthRepository接口新增getBindings、getOnlineDevices、redeemPairingCode方法
- DioAuthRepository实现401自动刷新token重试机制
- ConnectionSessionState扩展设备列表、在线状态、配对码等状态字段
This commit is contained in:
TongTongStudio
2026-08-03 20:22:29 +08:00
parent 79cffcb041
commit e1de4c8170
21 changed files with 1529 additions and 703 deletions

View File

@@ -49,12 +49,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get connectDevice => 'Connect Device';
@override
String get serverUrl => 'Signal Server URL:';
@override
String get serverUrlPlaceholder => 'wss://www.ttstd.com/signal';
@override
String get deviceId => 'Device ID (assigned by server):';
@@ -82,8 +76,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get usernamePasswordRequired => 'Please enter username and password';
@override
String get serverAndTargetRequired =>
'Please enter server URL and target device ID';
String get targetRequired => 'Please enter target device ID';
@override
String get authTitle => 'Connection Auth';
@@ -239,4 +232,42 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get streamModeSelfCodecDesc =>
'Self-codec hardware decoding is not supported on this platform.';
@override
String get boundDevices => 'Bound Devices';
@override
String get online => 'Online';
@override
String get offline => 'Offline';
@override
String get noBoundDevices => 'No bound devices yet';
@override
String get refreshDevices => 'Refresh';
@override
String get redeemPairingCode => 'Bind with Pairing Code';
@override
String get pairingCodeHint =>
'Enter the pairing code shown on the controlled device';
@override
String bindingFailed(Object error) {
return 'Binding failed: $error';
}
@override
String deviceOfflineCannotConnect(Object name) {
return 'Device \"$name\" is currently offline and cannot be connected';
}
@override
String get pleaseSelectDevice => 'Please select a bound device first';
@override
String get bindSuccess => 'Bound successfully';
}