启动Order游戏后,将游戏等级从1更改为2。 使用向左箭头键,列表的当前值从2变为1。 我怎样才能避免这种变化?
游戏中使用关键箭头(关键事件)来移动切片。选择元素(级别)用于更改电路板的大小。 当用户更改级别并单击新按钮时,键事件不会影响级别。然而,如果用户改变等级(例如,从2变为1)然后使用键箭头(例如,左箭头键),则等级改变(从2变为1)。我想禁用该更改。
我使用不成功
document.onKeyDown.listen((KeyboardEvent event) {
levelSelect.disabled = true;
...
levelSelect.disabled = false;
});
在lib / view / board.dart文件中的Board类中。
答案 0 :(得分:0)
当您单击select元素以更改值时,select元素将获得焦点(并将其从页面加载后的body
元素中移除)。结果是select元素处理键事件而不是您注册自定义键事件处理程序的文档。
您尝试将disabled
设置为false
并返回true
可能会使用Futures来允许浏览器处理状态更改。
更简单的解决方案是使用blur()
方法使select元素从自身中移除焦点:
levelSelect.onChange.listen((Event e) {
levelSelect.blur();
level = int.parse(levelSelect.value);
});