Zusammenfassung
Dart Web-UI-Paket kann deklarativ Handler für verschiedene Veranstaltungen, wie klicken und keyUp registrieren. Das keyUp-Ereignis wird für jedes einzelne Keyboard-up-Ereignis ausgelöst. Um diese Ereignisse zu filtern und nur bestimmte Schlüssel anzuhören, müssen Sie sich das keyCode-Attribut ansehen. Zum Glück hat Dart eine Komfortklasse, um Keycodes über Browser hinweg zu normalisieren. Sie können all dies innerhalb Ihrer deklarativen Bindungsattribute verwenden. Lesen Sie weiter, um zu erfahren, wie!
für Tastendrücke Zuhören
Die InputElement
Klasse hat einen Strom von Ereignissen für das keyUp Ereignis, genannt onKeyUp
(docs). Der onKeyUp
Strom sendet KeyboardEvent
(doc) Instanzen.
final Stream<KeyboardEvent> onKeyUp;
Old ‚n Busted
Die KeyboardEvent
ein keyCode
Accessor, die eine systemspezifische Schlüsselcode zurückgibt. Leider haben einige Systeme unterschiedliche Schlüsselcodes für denselben semantischen Schlüssel. Zum Glück hat Dart eine Lösung!
New Hotness
Verwenden Sie die KeyEvent.wrap(KeyboardEvent parent)
(doc) KeyEvent
und Normalisierung verwirrend Tastencodes zu emulieren!
new KeyEvent.wrap(keyboardEvent)
Nun, da Sie eine Instanz von KeyEvent
haben, können Sie seine keyCode
für einen rationalen Blick in welche Taste gedrückt wurde, abfragen. Der keyCode
Getter gibt eine int
zurück, aber Sie können diese mit einer Liste von Schlüsseln aus der Klasse KeyCode
(doc) vergleichen.
var keyEvent = new KeyEvent.wrap(keyboardEvent);
if (keyEvent.keyCode == KeyCode.ENTER) {
// enter was pressed
}
Kreuz-Browser-Taste drückt FTW
Die KeyEvent
und KeyCode
Klassen helfen Schlüsselcodes über Systemen und Browsern zu normalisieren, so brauchen Sie nicht über verschiedene Inkompatibilitäten zu kümmern.
Mit Web UI
Web UI können Sie deklarativ Ereignisbehandlung registrieren. Sie können auf wichtige Ereignisse warten und prüfen, ob die Eingabetaste gedrückt wurde. Hier ein Beispiel:
<input type="text" id="new-todo" on-key-up="if (new KeyEvent($event).keyCode == KeyCode.ENTER) createNewTodo()">
Beachten Sie, wie on-key-up
die if-Anweisung registriert, die KeyEvent
und KeyCode
verwendet die Tastencodes zu normalisieren.Die Methode createNewTodo
wird nur aufgerufen, wenn die Eingabetaste gedrückt wurde.
Ta da!
Dieses ist extrem nützliches Muster. –
Es ist ein bisschen ausführlich, imo, aber es scheint zu funktionieren. :) –
Ich würde gerne on-key-enter sagen. Also habe ich geöffnet: https://github.com/dart-lang/web-ui/issues/357 –