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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return KeyboardListener(
|
return Focus(
|
||||||
focusNode: _focusNode,
|
focusNode: _focusNode,
|
||||||
onKeyEvent: (value) {
|
onKeyEvent: (FocusNode node, value) {
|
||||||
if (value is! KeyDownEvent && value is! KeyRepeatEvent) return;
|
if (value is! KeyDownEvent && value is! KeyRepeatEvent) {
|
||||||
|
return KeyEventResult.ignored;
|
||||||
|
}
|
||||||
|
|
||||||
final LogicalKeyboardKey key = value.logicalKey;
|
final LogicalKeyboardKey key = value.logicalKey;
|
||||||
|
bool handled = false;
|
||||||
|
|
||||||
if (key == LogicalKeyboardKey.keyA) {
|
if (key == LogicalKeyboardKey.keyA) {
|
||||||
// Move left
|
// Move left
|
||||||
@@ -103,6 +106,7 @@ class _PlayerState extends State<Player> {
|
|||||||
if (playerAngle < 0) {
|
if (playerAngle < 0) {
|
||||||
playerAngle += 2 * math.pi;
|
playerAngle += 2 * math.pi;
|
||||||
}
|
}
|
||||||
|
handled = true;
|
||||||
} else if (key == LogicalKeyboardKey.keyD) {
|
} else if (key == LogicalKeyboardKey.keyD) {
|
||||||
// Move right
|
// Move right
|
||||||
playerAngle += 0.1;
|
playerAngle += 0.1;
|
||||||
@@ -110,15 +114,23 @@ class _PlayerState extends State<Player> {
|
|||||||
if (playerAngle > 2 * math.pi) {
|
if (playerAngle > 2 * math.pi) {
|
||||||
playerAngle -= 2 * math.pi;
|
playerAngle -= 2 * math.pi;
|
||||||
}
|
}
|
||||||
|
handled = true;
|
||||||
} else if (key == LogicalKeyboardKey.keyW) {
|
} else if (key == LogicalKeyboardKey.keyW) {
|
||||||
// Move forward
|
// Move forward
|
||||||
playerPosition += playerDelta;
|
playerPosition += playerDelta;
|
||||||
|
handled = true;
|
||||||
} else if (key == LogicalKeyboardKey.keyS) {
|
} else if (key == LogicalKeyboardKey.keyS) {
|
||||||
// Move backwwards
|
// Move backwwards
|
||||||
playerPosition -= playerDelta;
|
playerPosition -= playerDelta;
|
||||||
|
handled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
setState(() {});
|
if (handled) {
|
||||||
|
setState(() {});
|
||||||
|
return KeyEventResult.handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
return KeyEventResult.ignored;
|
||||||
},
|
},
|
||||||
child: CustomPaint(
|
child: CustomPaint(
|
||||||
painter: PlayerPainter(
|
painter: PlayerPainter(
|
||||||
|
|||||||
Reference in New Issue
Block a user