jos*_*eph 5 events event-handling preventdefault dart flutter
我试图在用户按下音量按钮执行特定操作并阻止默认行为(音量更改)时进行拦截。
这是我到目前为止的代码:
RawKeyboard.instance.addListener(_keyboardListener);
void _keyboardListener(RawKeyEvent e) {
if(e.runtimeType == RawKeyUpEvent) {
RawKeyEventDataAndroid eA = e.data;
if(eA.keyCode == 24) { //volume up key
_goNextPage();
}
if(eA.keyCode == 25) { //volume down key
_goPrevPage();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我将如何防止音量改变(并阻止音量滑块出现在顶部)?
类似的 Javascript 将调用event.preventDefault()关键事件。
这似乎是一件相当微不足道的事情,但我无法在文档中找到任何答案。
谢谢。
我也遇到过类似的问题,分享一下我是如何解决的。
要停止传播,我们必须true从焦点节点树中onKey的 a 方法返回。FocusNode为了实现这一点,我用这样的小部件包装了我的应用程序FocusScope主体:Focus
MaterialApp(
home: Scaffold(
body: FocusScope(
autofocus: true,
child: Focus(
autofocus: true,
canRequestFocus: true,
onKey: (data, event) {
if (event.isKeyPressed(LogicalKeyboardKey.audioVolumeUp)) {
print("Volume up");
return true;
}
if (event
.isKeyPressed(LogicalKeyboardKey.audioVolumeDown)) {
print("Volume down");
return true;
}
return false;
},
child: Text(text: "Hallochen")))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1008 次 |
| 最近记录: |