У меня есть устройство Android, которое вы видите на картинке. Это устройство имеет оранжевую кнопку на задней панели. Я хочу вызвать определенную функцию при нажатии этой кнопки. Я просто пытаюсь использовать HardwareKeyboard во Flutter, как показано ниже, и получаю решение, но не получаю ответа. введите описание изображения здесь
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
@override
void initState() {
HardwareKeyboard.instance.addHandler(key_handler);
super.initState();
}
bool key_handler(event) {
print(event.physicalKey.debugName);
// In this part, when a button is clicked, it should return certain responses to me.
if (event is KeyDownEvent) {
if (event.physicalKey.usbHidUsage == PhysicalKeyboardKey.audioVolumeDown.usbHidUsage) {
_incrementCounter();
} else if (event.physicalKey.usbHidUsage ==
PhysicalKeyboardKey.audioVolumeUp.usbHidUsage) {
_decrementCounter();
}
}
return true;
}
void _incrementCounter() {
setState(() {
_counter++;
});
}
void _decrementCounter() {
setState(() {
_counter--;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'Hit a Volume UP/Down key:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
TextField(
decoration: InputDecoration(
hintText: "Once touch here and show a software key."),
),
],
),
),
);
}
}
Приведенный выше код увеличивает или уменьшает счетчик на 1 единицу при нажатии кнопок увеличения и уменьшения громкости. Оно работает.
Кнопка, которая мне нужна, известна как f4 сзади. Но когда я нажимаю на эту кнопку, я не получаю никакого ответа.
Я думаю, что у Flutter есть эта проблема, потому что коды этой части не полны. Потому что нет реакции ни на одну кнопку кроме кнопок увеличения и уменьшения громкости, кнопки назад.
Я не могу найти плагин для решения этой проблемы. Раньше был плагин под названием hardware_buttons. В настоящее время недоступен. Потому что было написано 3 года назад и обновление не пришло. Думаю, с тех пор, как Flutter добавил к себе HardwareKeyboard, она стала не нужна.
Пожалуйста, напишите все догадки, которые вы знаете и предполагаете, в разделе комментариев.
Поскольку ответ на вышеуказанный вопрос не мог быть решен на стороне Flutter, мне пришлось написать следующий пакет. Те, кто сталкивается с этим вопросом, могут использовать его.