私はM1リリースを使用しており、次のようなキーハンドラーを作成しました。
void _onKeyPress(KeyboardEvent e) {
switch (e.keyIdentifier) {
case KeyName.UP:
case KeyName.LEFT:
e.preventDefault();
prev();
break;
case "U+0020": // FIXME Must be a better way, or?
case KeyName.DOWN:
case KeyName.RIGHT:
e.preventDefault();
next();
break;
}
}
Chromeでは正常に動作しますが、FFやIEでは動作しません。スペースバーを処理し、それでも1つのスイッチに収めるより良い方法があるはずですよね?スペースを確保するために他のフィールドを調べることができることは知っていますが、それも良い選択肢ではありません(それ以来、コードを2つのswitchステートメントに分割します)。とにかく、FFとIEで機能しないという問題はさらに深刻です。 。代わりに使用するように書き直すとkeyCode
、すべてのブラウザで正常に機能します。
void _onKeyPress(KeyboardEvent e) {
switch (e.keyCode) {
case 38:
case 37:
e.preventDefault();
prev();
break;
case 32:
case 40:
case 39:
e.preventDefault();
next();
break;
}
}
私の問題は、仮想キーコードの定数が見つからないことです。私は何か間違ったことをしていますか?Dartで互換性のあるクロスブラウザの主要なイベントを処理するための最良の方法は何ですか?