Manipulação de eventos de teclado em Dart Language

Em primeiro lugar, você precisa adicionar um ouvinte:

window.on.keyDown.add(myKeyDownEvent);

Vamos, por exemplo, escrever um método que lida com o pressionamento de teclas de setas:

void myKeyDownEvent(Event event){
if(event is KeyboardEvent){
KeyboardEvent kevent = event as KeyboardEvent;
query
("#text").text = kevent.keyIdentifier;
switch(kevent.keyIdentifier){
case "Up":
query
("#text").text = "Up Pressed";
sprites
.forEach((s) => s.usermove(0,10));
break;
case "Down":
query
("#text").text = "Down Pressed";
sprites
.forEach((s) => s.usermove(0,-10));
break;
case "Left":
break;
case "Right":
break;
case "U+0020":
query
("#text").text = "Space pressed";
break;
}
}

Onde texto é um elemento de texto em seu código html.
Como você pode ver, primeiro verificamos se o evento é um KeyboardEvent, se sim podemos lançá-lo com segurança para esse tipo de modo a ter acesso a todos os métodos disponíveis para ler informações sobre a tecla que acabou de pressionar.

KeyIdentifier é uma representação String da chave (U + 0020 é a barra de espaço).