Fix noisy OS sounds on key presses
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
+16
-4
@@ -90,12 +90,15 @@ class _PlayerState extends State<Player> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return KeyboardListener(
|
||||
return Focus(
|
||||
focusNode: _focusNode,
|
||||
onKeyEvent: (value) {
|
||||
if (value is! KeyDownEvent && value is! KeyRepeatEvent) return;
|
||||
onKeyEvent: (FocusNode node, value) {
|
||||
if (value is! KeyDownEvent && value is! KeyRepeatEvent) {
|
||||
return KeyEventResult.ignored;
|
||||
}
|
||||
|
||||
final LogicalKeyboardKey key = value.logicalKey;
|
||||
bool handled = false;
|
||||
|
||||
if (key == LogicalKeyboardKey.keyA) {
|
||||
// Move left
|
||||
@@ -103,6 +106,7 @@ class _PlayerState extends State<Player> {
|
||||
if (playerAngle < 0) {
|
||||
playerAngle += 2 * math.pi;
|
||||
}
|
||||
handled = true;
|
||||
} else if (key == LogicalKeyboardKey.keyD) {
|
||||
// Move right
|
||||
playerAngle += 0.1;
|
||||
@@ -110,15 +114,23 @@ class _PlayerState extends State<Player> {
|
||||
if (playerAngle > 2 * math.pi) {
|
||||
playerAngle -= 2 * math.pi;
|
||||
}
|
||||
handled = true;
|
||||
} else if (key == LogicalKeyboardKey.keyW) {
|
||||
// Move forward
|
||||
playerPosition += playerDelta;
|
||||
handled = true;
|
||||
} else if (key == LogicalKeyboardKey.keyS) {
|
||||
// Move backwwards
|
||||
playerPosition -= playerDelta;
|
||||
handled = true;
|
||||
}
|
||||
|
||||
setState(() {});
|
||||
if (handled) {
|
||||
setState(() {});
|
||||
return KeyEventResult.handled;
|
||||
}
|
||||
|
||||
return KeyEventResult.ignored;
|
||||
},
|
||||
child: CustomPaint(
|
||||
painter: PlayerPainter(
|
||||
|
||||
Reference in New Issue
Block a user