我已经阅读了KeyEvent类(link here)的文档,以及几个SOF问题,但我仍然不能让Dart听我的按键。我正在使用Polymer-dart 0.16,并且可以使用core-a11-keys
,但它不包含我需要的PLUS和MINUS键。
从我定义的自定义元素<myElement>
,我希望能够听到被按下的不同键(元素中的任何位置)。该元素当然具有相应的html
和dart
文件。我应该从html
还是dart
听取按键?该文档似乎指出,在dart
中使用此示例完成了侦听和处理:
// Initialize a stream for the KeyEvents:
var stream = KeyEvent.keyPressEvent.forTarget(document.body);
// Start listening to the stream of KeyEvents.
stream.listen((keyEvent) =>
window.console.log('KeyPress event detected ${keyEvent.charCode}'));
...
// Add a new KeyEvent of someone pressing the 'A' key to the stream so
// listeners can know a KeyEvent happened.
stream.add(new KeyEvent('keypress', keyCode: 65, charCode: 97));
我猜最后一行是模拟用户按一个键。但如果我不添加它,就不会听取按键。
简而言之: 有人可以举一个关于如何倾听和处理按键事件的简单示例吗?
修改
想象一下我想要做的一个简单方法就是考虑谷歌收件箱。假设您的收件箱中有多封邮件,并且您希望在它们之间移动。在这个应用程序中,您可以使用左箭头和右箭头(以及用于不同操作的许多其他快捷方式)来执行此操作。
我正在尝试与Dart做类似的事情。假设我有一个自定义元素<my-element>
,其中显示了所有邮件。我希望这个元素能够监听一些事件,比如按下UP和DOWN键。使用core-a11-keys,我能够做到,把
<core-a11y-keys target="{{ body }}" keys="up"
on-keys-pressed="{{ selectPreviousItem }}"></core-a11y-keys>
在myElement.html
内(标记<polymer-element name='my-element'>
内),其中selectPreviousItem
是我的事件处理程序,这是myElement.dart
中的方法。问题是core-a11-keys没有键盘上的所有键(我需要)。因此,我试图做同样的事情,但没有core-a11-keys,这是:当焦点位于<myElement>
的某处时,监听和处理用户单击UP(或其他键)的事件(例如,重点可能在<myNestedElement>
内<myElement>
}。