如何在Dart中触发键盘事件

如何在Dart中触发键盘事件,dart,Dart,正如我在标题中所说,我想在Dart中模拟一个键控事件。问题是我没有找到如何创建新的KeyboardEvent对象 我发现的唯一方法是使用事件(字符串类型)构造函数,然后在窗口对象上分派它。但这不起作用,因为我的“keyup”处理程序在参数中接受KeyboardEvent。例如: window.on.keyUp.add((KeyboardEvent e){ print('keyUp handler'); }); KeyboardEvent e = new Event("KeyboardEvent

正如我在标题中所说,我想在Dart中模拟一个键控事件。问题是我没有找到如何创建新的KeyboardEvent对象

我发现的唯一方法是使用事件(字符串类型)构造函数,然后在窗口对象上分派它。但这不起作用,因为我的“keyup”处理程序在参数中接受KeyboardEvent。例如:

window.on.keyUp.add((KeyboardEvent e){
 print('keyUp handler');
});
KeyboardEvent e = new Event("KeyboardEvent");
window.on.keyUp.dispatch(e);
有没有一种方法可以创建和分派KeyBoardEvent来模拟Dart中的“keyup”


另外,我应该提到,由于js interop库,我也尝试在JavaScript中触发事件,但它只触发js处理程序。

尝试以下代码:

window.on.keyUp.add((事件){
打印(“键控处理器”);
if(事件为键盘事件)
{
KeyboardEvent keyEvent=事件作为KeyboardEvent;
//如果需要,可以使用keyEvent
}  
});
window.on.keyUp.dispatch(新事件(“keyUp”);

我认为事件构造函数上的参数必须是事件的类型。此外,您还可以检查事件是否为keyboardEvent,以便处理KeyIdentifier,例如。

现在可以从窗口发送keyboardEvent,有关更多信息,请参阅Google Group上的讨论:

此解决方案有效,但不能使用它有两个原因:-第一个原因是我必须删除键入-第二个原因是如果您想在处理程序中检索事件的keyCode属性(这种情况一直发生…),这是不可能的,因为它不是KeyboardEvent@mbreton请考虑这个新版本的代码,它适合你的需要吗?谢谢你,爱德华多,但是当我们用event类型的en event启动window.on.keyUp时,这不应该起作用。我需要为单元测试触发和KeyboardEvent,所以我需要调度一个KeyboardEvent,并正确初始化其属性(我认为主要是keyCode值),您成功了吗?我尝试了以下操作,但没有成功:input.onKeyPress.listen((KeyboardEvent e){if(e.keyCode==html.keyCode.ENTER){html.window.dispatchEvent(new html.KeyboardEvent(“keypress”,keyplocation:html.keyCode.DOWN));});