mirror of https://github.com/flutter/pinball.git
parent
e8cd40f14b
commit
e596cac6c1
@ -1,2 +1,3 @@
|
||||
export 'blueprint.dart';
|
||||
export 'keyboard_input_controller.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