Я внедряю протокол удаленного V2 Android TV в Flutter/Dart. Моя цель - отправить ввод клавиатуры из мобильного приложения в телевизор. Для большинства персонажей все работает нормально. Тем не менее, ключ Backspace не работает, когда я отправляю символы по одному.TextField(
controller: controller,
focusNode: focusNode,
onChanged: (value) {
// send only the latest character typed
String char = value.substring(value.length - 1);
provider.sendText(char);
},
style: GoogleFonts.montserrat(color: Colors.white),
decoration: const InputDecoration(
hintText: "Type here...",
hintStyle: TextStyle(color: Colors.grey, fontSize: 20.0),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide.none,
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide.none,
),
),
)
< /code>
и текст отправки логики: < /p>
void sendText(String text) {
pairing?.sendTextToTv(text);
}
void sendTextToTv(String text) {
final payload = buildPayload(text);
if (commandSocket != null) {
commandSocket!.add(payload);
commandSocket!.flush();
}
}
List buildPayload(String text) {
final asciiValues = text.codeUnits;
final asciiLen = asciiValues.length;
// innermost block
List block1 = [8, 11, 16, 11, 26, asciiLen, ...asciiValues];
block1.insert(0, block1.length);
// wrap with block2
List block2 = [8, 0, 18, ...block1];
block2.insert(0, block2.length);
// wrap with block3
List block3 = [8, 0, 16, 0, 26, ...block2];
block3.insert(0, block3.length);
// add header
List payload = [170, 1, ...block3];
payload.insert(0, payload.length);
return payload;
}
< /code>
Проблема: < /p>
Отправка одного символа за раз работает для букв и чисел. < /p>
Backspace не работает в этом одноразовом режиме отправки. Я правильно реализую Backspace при отправке отдельных символов на телевизор с помощью этого протокола V2? Должен ли я отправлять специальную полезную нагрузку для Backspace вместо того, чтобы отправлять его как обычный символ?
Подробнее здесь: https://stackoverflow.com/questions/797 ... le-charact