mirror of https://github.com/flutter/pinball.git
parent
e8cd40f14b
commit
e596cac6c1
@ -1,2 +1,3 @@
|
|||||||
export 'blueprint.dart';
|
export 'blueprint.dart';
|
||||||
|
export 'keyboard_input_controller.dart';
|
||||||
export 'priority.dart';
|
export 'priority.dart';
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
import 'package:flame/components.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
|
/// The signature for a key handle function
|
||||||
|
typedef KeyHandlerCallback = bool Function();
|
||||||
|
|
||||||
|
/// {@template keyboard_input_controller}
|
||||||
|
/// A that receives keyboard input and execute registered methods
|
||||||
|
/// {@endtemplate}
|
||||||
|
class KeyboardInputController extends Component with KeyboardHandler {
|
||||||
|
|
||||||
|
/// {@macro keyboard_input_controller}
|
||||||
|
KeyboardInputController({
|
||||||
|
Map<LogicalKeyboardKey, KeyHandlerCallback> keyUp = const {},
|
||||||
|
Map<LogicalKeyboardKey, KeyHandlerCallback> keyDown = const {},
|
||||||
|
}) : _keyUp = keyUp,
|
||||||
|
_keyDown = keyDown;
|
||||||
|
|
||||||
|
final Map<LogicalKeyboardKey, KeyHandlerCallback> _keyUp;
|
||||||
|
final Map<LogicalKeyboardKey, KeyHandlerCallback> _keyDown;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool onKeyEvent(RawKeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
||||||
|
final isUp = event is RawKeyUpEvent;
|
||||||
|
|
||||||
|
final handlers = isUp ? _keyUp : _keyDown;
|
||||||
|
final handler = handlers[event.logicalKey];
|
||||||
|
|
||||||
|
if (handler != null) {
|
||||||
|
return handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue