可以使用
RawKeyboardListener 包裹一层
body: RawKeyboardListener(
focusNode: FocusNode(),
autofocus: true,
onKey: (event) {
if (event.runtimeType == RawKeyDownEvent) {
Direction newDirection = Direction.Left;
switch (event.logicalKey.keyLabel) {
case "Arrow Up":
newDirection = Direction.Up;
break;
case "Arrow Down":
newDirection = Direction.Down;
break;
case "Arrow Left":
newDirection = Direction.Left;
break;
case "Arrow Right":
newDirection = Direction.Right;
break;
}
setState(() {
direction = newDirection;
});
}
},
child: _body(),
)