mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-01 01:18:38 +08:00
fix!: Migrate from RawKeyEvent to KeyEvent (#3002)
First pass at migrating from `RawKeyEvent` and `RawKeyboard` to `KeyEvent` and `HardwareKeyboard`. Context: https://docs.flutter.dev/release/breaking-changes/key-event-migration
This commit is contained in:
2
.github/workflows/cicd.yml
vendored
2
.github/workflows/cicd.yml
vendored
@ -9,7 +9,7 @@ on:
|
|||||||
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
FLUTTER_MIN_VERSION: '3.16.0'
|
FLUTTER_MIN_VERSION: '3.19.0'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# BEGIN LINTING STAGE
|
# BEGIN LINTING STAGE
|
||||||
|
|||||||
@ -5,7 +5,7 @@ publish_to: none
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -44,7 +44,7 @@ class EmberPlayer extends SpriteAnimationComponent
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool onKeyEvent(RawKeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
bool onKeyEvent(KeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
||||||
horizontalDirection = 0;
|
horizontalDirection = 0;
|
||||||
horizontalDirection += (keysPressed.contains(LogicalKeyboardKey.keyA) ||
|
horizontalDirection += (keysPressed.contains(LogicalKeyboardKey.keyA) ||
|
||||||
keysPressed.contains(LogicalKeyboardKey.arrowLeft))
|
keysPressed.contains(LogicalKeyboardKey.arrowLeft))
|
||||||
|
|||||||
@ -5,6 +5,7 @@ version: 1.0.0+1
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -209,7 +209,7 @@ class PadRacingGame extends Forge2DGame with KeyboardEvents {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
super.onKeyEvent(event, keysPressed);
|
super.onKeyEvent(event, keysPressed);
|
||||||
|
|||||||
@ -7,7 +7,7 @@ version: 0.1.0
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -88,7 +88,7 @@ class TRexGame extends FlameGame
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
if (keysPressed.contains(LogicalKeyboardKey.enter) ||
|
if (keysPressed.contains(LogicalKeyboardKey.enter) ||
|
||||||
|
|||||||
@ -7,7 +7,7 @@ version: 0.1.0
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
collection: ^1.16.0
|
collection: ^1.16.0
|
||||||
|
|||||||
@ -142,8 +142,8 @@ class Player extends PositionComponent with KeyboardHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool onKeyEvent(RawKeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
bool onKeyEvent(KeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
||||||
final isKeyDown = event is RawKeyDownEvent;
|
final isKeyDown = event is KeyDownEvent;
|
||||||
final keyLeft = (event.logicalKey == LogicalKeyboardKey.arrowLeft) ||
|
final keyLeft = (event.logicalKey == LogicalKeyboardKey.arrowLeft) ||
|
||||||
(event.logicalKey == LogicalKeyboardKey.keyA);
|
(event.logicalKey == LogicalKeyboardKey.keyA);
|
||||||
final keyRight = (event.logicalKey == LogicalKeyboardKey.arrowRight) ||
|
final keyRight = (event.logicalKey == LogicalKeyboardKey.arrowRight) ||
|
||||||
|
|||||||
@ -155,10 +155,10 @@ class CoordinateSystemsExample extends FlameGame
|
|||||||
/// Camera controls.
|
/// Camera controls.
|
||||||
@override
|
@override
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
final isKeyDown = event is RawKeyDownEvent;
|
final isKeyDown = event is KeyDownEvent;
|
||||||
|
|
||||||
if (event.logicalKey == LogicalKeyboardKey.keyA) {
|
if (event.logicalKey == LogicalKeyboardKey.keyA) {
|
||||||
cameraVelocity.x = isKeyDown ? -1 : 0;
|
cameraVelocity.x = isKeyDown ? -1 : 0;
|
||||||
|
|||||||
@ -100,8 +100,8 @@ class MovableEmber extends Ember<FollowComponentExample>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool onKeyEvent(RawKeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
bool onKeyEvent(KeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
||||||
final isKeyDown = event is RawKeyDownEvent;
|
final isKeyDown = event is KeyDownEvent;
|
||||||
|
|
||||||
final bool handled;
|
final bool handled;
|
||||||
if (event.logicalKey == LogicalKeyboardKey.keyA) {
|
if (event.logicalKey == LogicalKeyboardKey.keyA) {
|
||||||
|
|||||||
@ -142,7 +142,7 @@ Press T button to toggle player to collide with other objects.
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
for (final key in keysPressed) {
|
for (final key in keysPressed) {
|
||||||
|
|||||||
@ -39,14 +39,14 @@ class KeyboardExample extends FlameGame with KeyboardEvents {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
final isKeyDown = event is RawKeyDownEvent;
|
final isKeyDown = event is KeyDownEvent;
|
||||||
|
|
||||||
// Avoiding repeat event as we are interested only in
|
// Avoiding repeat event as we are interested only in
|
||||||
// key up and key down event.
|
// key up and key down event.
|
||||||
if (!event.repeat) {
|
if (key is! KeyRepeatEvent) {
|
||||||
if (event.logicalKey == LogicalKeyboardKey.keyA) {
|
if (event.logicalKey == LogicalKeyboardKey.keyA) {
|
||||||
_direction.x += isKeyDown ? -1 : 1;
|
_direction.x += isKeyDown ? -1 : 1;
|
||||||
} else if (event.logicalKey == LogicalKeyboardKey.keyD) {
|
} else if (event.logicalKey == LogicalKeyboardKey.keyD) {
|
||||||
|
|||||||
@ -30,10 +30,10 @@ class NoFlameGameExample extends Game with KeyboardEvents {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
final isKeyDown = event is RawKeyDownEvent;
|
final isKeyDown = event is KeyDownEvent;
|
||||||
|
|
||||||
if (event.logicalKey == LogicalKeyboardKey.keyA) {
|
if (event.logicalKey == LogicalKeyboardKey.keyA) {
|
||||||
velocity.x = isKeyDown ? -1 : 0;
|
velocity.x = isKeyDown ? -1 : 0;
|
||||||
|
|||||||
@ -7,7 +7,7 @@ version: 0.1.0
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
dashbook: ^0.1.12
|
dashbook: ^0.1.12
|
||||||
|
|||||||
@ -16,6 +16,7 @@ command:
|
|||||||
bootstrap:
|
bootstrap:
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
|
flutter: ^3.19.0
|
||||||
dependencies:
|
dependencies:
|
||||||
meta: ^1.9.1
|
meta: ^1.9.1
|
||||||
vector_math: ^2.1.4
|
vector_math: ^2.1.4
|
||||||
|
|||||||
@ -5,7 +5,7 @@ publish_to: 'none'
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -23,8 +23,8 @@ class KeyboardListenerComponent extends Component with KeyboardHandler {
|
|||||||
final Map<LogicalKeyboardKey, KeyHandlerCallback> _keyDown;
|
final Map<LogicalKeyboardKey, KeyHandlerCallback> _keyDown;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool onKeyEvent(RawKeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
bool onKeyEvent(KeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
||||||
final isUp = event is RawKeyUpEvent;
|
final isUp = event is KeyUpEvent;
|
||||||
|
|
||||||
final handlers = isUp ? _keyUp : _keyDown;
|
final handlers = isUp ? _keyUp : _keyDown;
|
||||||
final handler = handlers[event.logicalKey];
|
final handler = handlers[event.logicalKey];
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import 'package:flutter/services.dart';
|
|||||||
/// Must be used in components that can only be added to games that are mixed
|
/// Must be used in components that can only be added to games that are mixed
|
||||||
/// with [HasKeyboardHandlerComponents].
|
/// with [HasKeyboardHandlerComponents].
|
||||||
mixin KeyboardHandler on Component {
|
mixin KeyboardHandler on Component {
|
||||||
bool onKeyEvent(RawKeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
bool onKeyEvent(KeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -311,7 +311,7 @@ class GameWidgetState<T extends Game> extends State<GameWidget<T>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyEventResult _handleKeyEvent(FocusNode focusNode, RawKeyEvent event) {
|
KeyEventResult _handleKeyEvent(FocusNode focusNode, KeyEvent event) {
|
||||||
final game = currentGame;
|
final game = currentGame;
|
||||||
|
|
||||||
if (!_focusNode.hasPrimaryFocus) {
|
if (!_focusNode.hasPrimaryFocus) {
|
||||||
@ -319,7 +319,10 @@ class GameWidgetState<T extends Game> extends State<GameWidget<T>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (game is KeyboardEvents) {
|
if (game is KeyboardEvents) {
|
||||||
return game.onKeyEvent(event, RawKeyboard.instance.keysPressed);
|
return game.onKeyEvent(
|
||||||
|
event,
|
||||||
|
HardwareKeyboard.instance.logicalKeysPressed,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return KeyEventResult.handled;
|
return KeyEventResult.handled;
|
||||||
}
|
}
|
||||||
@ -361,7 +364,7 @@ class GameWidgetState<T extends Game> extends State<GameWidget<T>> {
|
|||||||
focusNode: _focusNode,
|
focusNode: _focusNode,
|
||||||
autofocus: widget.autofocus,
|
autofocus: widget.autofocus,
|
||||||
descendantsAreFocusable: true,
|
descendantsAreFocusable: true,
|
||||||
onKey: _handleKeyEvent,
|
onKeyEvent: _handleKeyEvent,
|
||||||
child: MouseRegion(
|
child: MouseRegion(
|
||||||
cursor: currentGame.mouseCursor,
|
cursor: currentGame.mouseCursor,
|
||||||
child: Directionality(
|
child: Directionality(
|
||||||
|
|||||||
@ -13,7 +13,7 @@ mixin HasKeyboardHandlerComponents<W extends World> on FlameGame<W>
|
|||||||
@override
|
@override
|
||||||
@mustCallSuper
|
@mustCallSuper
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
final blockedPropagation = !propagateToChildren<KeyboardHandler>(
|
final blockedPropagation = !propagateToChildren<KeyboardHandler>(
|
||||||
@ -34,7 +34,7 @@ mixin HasKeyboardHandlerComponents<W extends World> on FlameGame<W>
|
|||||||
/// Override [onKeyEvent] to customize the keyboard handling behavior.
|
/// Override [onKeyEvent] to customize the keyboard handling behavior.
|
||||||
mixin KeyboardEvents on Game {
|
mixin KeyboardEvents on Game {
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
assert(
|
assert(
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
collection: ^1.17.1
|
collection: ^1.17.1
|
||||||
|
|||||||
@ -9,15 +9,15 @@ abstract class _KeyCallStub {
|
|||||||
|
|
||||||
class KeyCallStub extends Mock implements _KeyCallStub {}
|
class KeyCallStub extends Mock implements _KeyCallStub {}
|
||||||
|
|
||||||
class MockRawKeyUpEvent extends Mock implements RawKeyUpEvent {
|
class MockKeyUpEvent extends Mock implements KeyUpEvent {
|
||||||
@override
|
@override
|
||||||
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
|
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
|
||||||
return super.toString();
|
return super.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RawKeyUpEvent _mockKeyUp(LogicalKeyboardKey key) {
|
KeyUpEvent _mockKeyUp(LogicalKeyboardKey key) {
|
||||||
final event = MockRawKeyUpEvent();
|
final event = MockKeyUpEvent();
|
||||||
when(() => event.logicalKey).thenReturn(key);
|
when(() => event.logicalKey).thenReturn(key);
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ class _KeyboardEventsGame extends FlameGame with KeyboardEvents {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
this.keysPressed.add(event.character ?? 'none');
|
this.keysPressed.add(event.character ?? 'none');
|
||||||
@ -25,7 +25,7 @@ class _KeyboardHandlerComponent extends Component with KeyboardHandler {
|
|||||||
final List<String> keysPressed = [];
|
final List<String> keysPressed = [];
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool onKeyEvent(RawKeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
bool onKeyEvent(KeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
|
||||||
this.keysPressed.add(event.character ?? 'none');
|
this.keysPressed.add(event.character ?? 'none');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,7 +25,7 @@ class _GameWithKeyboardEvents extends FlameGame with KeyboardEvents {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
keyEvents.add(event.logicalKey);
|
keyEvents.add(event.logicalKey);
|
||||||
@ -443,7 +443,7 @@ void main() {
|
|||||||
testWidgets('overlay handles keys', (tester) async {
|
testWidgets('overlay handles keys', (tester) async {
|
||||||
final overlayKeyEvents = <LogicalKeyboardKey>[];
|
final overlayKeyEvents = <LogicalKeyboardKey>[];
|
||||||
final overlayFocusNode = FocusNode(
|
final overlayFocusNode = FocusNode(
|
||||||
onKey: (_, keyEvent) {
|
onKeyEvent: (_, keyEvent) {
|
||||||
overlayKeyEvents.add(keyEvent.logicalKey);
|
overlayKeyEvents.add(keyEvent.logicalKey);
|
||||||
return KeyEventResult.ignored;
|
return KeyEventResult.ignored;
|
||||||
},
|
},
|
||||||
@ -475,7 +475,7 @@ void main() {
|
|||||||
await simulateKeyDownEvent(LogicalKeyboardKey.keyA);
|
await simulateKeyDownEvent(LogicalKeyboardKey.keyA);
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
|
|
||||||
expect(game.keyEvents, <RawKeyEvent>[]);
|
expect(game.keyEvents, <KeyEvent>[]);
|
||||||
expect(overlayKeyEvents, [LogicalKeyboardKey.keyA]);
|
expect(overlayKeyEvents, [LogicalKeyboardKey.keyA]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -3,27 +3,23 @@ import 'package:flame/input.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:mocktail/mocktail.dart';
|
|
||||||
|
|
||||||
class _ValidGame extends FlameGame with KeyboardEvents {}
|
class _ValidGame extends FlameGame with KeyboardEvents {}
|
||||||
|
|
||||||
class _InvalidGame extends FlameGame
|
class _InvalidGame extends FlameGame
|
||||||
with HasKeyboardHandlerComponents, KeyboardEvents {}
|
with HasKeyboardHandlerComponents, KeyboardEvents {}
|
||||||
|
|
||||||
class _MockRawKeyEventData extends Mock implements RawKeyEventData {
|
|
||||||
@override
|
|
||||||
String toString({DiagnosticLevel minLevel = DiagnosticLevel.debug}) {
|
|
||||||
return super.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
group('Keyboard events', () {
|
group('Keyboard events', () {
|
||||||
test(
|
test(
|
||||||
'game with KeyboardEvents can handle key events',
|
'game with KeyboardEvents can handle key events',
|
||||||
() {
|
() {
|
||||||
final validGame = _ValidGame();
|
final validGame = _ValidGame();
|
||||||
final event = RawKeyDownEvent(data: _MockRawKeyEventData());
|
const event = KeyDownEvent(
|
||||||
|
physicalKey: PhysicalKeyboardKey.arrowUp,
|
||||||
|
logicalKey: LogicalKeyboardKey.arrowUp,
|
||||||
|
timeStamp: Duration.zero,
|
||||||
|
);
|
||||||
|
|
||||||
// Should just work with the default implementation
|
// Should just work with the default implementation
|
||||||
expect(
|
expect(
|
||||||
@ -37,7 +33,11 @@ void main() {
|
|||||||
'cannot mix KeyboardEvent and HasKeyboardHandlerComponents together',
|
'cannot mix KeyboardEvent and HasKeyboardHandlerComponents together',
|
||||||
() {
|
() {
|
||||||
final invalidGame = _InvalidGame();
|
final invalidGame = _InvalidGame();
|
||||||
final event = RawKeyDownEvent(data: _MockRawKeyEventData());
|
const event = KeyDownEvent(
|
||||||
|
physicalKey: PhysicalKeyboardKey.arrowUp,
|
||||||
|
logicalKey: LogicalKeyboardKey.arrowUp,
|
||||||
|
timeStamp: Duration.zero,
|
||||||
|
);
|
||||||
|
|
||||||
// Should throw an assertion error
|
// Should throw an assertion error
|
||||||
expect(
|
expect(
|
||||||
|
|||||||
@ -10,7 +10,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
audioplayers: ^5.0.0
|
audioplayers: ^5.0.0
|
||||||
|
|||||||
@ -107,7 +107,7 @@ class PlayerComponent extends SpriteAnimationComponent
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
bool onKeyEvent(
|
bool onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
if (keysPressed.contains(LogicalKeyboardKey.tab)) {
|
if (keysPressed.contains(LogicalKeyboardKey.tab)) {
|
||||||
|
|||||||
@ -7,6 +7,7 @@ version: 1.0.0+1
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
equatable: ^2.0.5
|
equatable: ^2.0.5
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.10.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
bloc: ^8.1.1
|
bloc: ^8.1.1
|
||||||
|
|||||||
@ -10,7 +10,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
archive: ^3.3.9
|
archive: ^3.3.9
|
||||||
|
|||||||
@ -7,7 +7,7 @@ version: 1.0.0+1
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
dashbook: ^0.1.12
|
dashbook: ^0.1.12
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -58,32 +58,32 @@ class ColonistsGame extends FlameGame with KeyboardEvents {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
KeyEventResult onKeyEvent(
|
KeyEventResult onKeyEvent(
|
||||||
RawKeyEvent event,
|
KeyEvent event,
|
||||||
Set<LogicalKeyboardKey> keysPressed,
|
Set<LogicalKeyboardKey> keysPressed,
|
||||||
) {
|
) {
|
||||||
var howMuch = 0.0;
|
var howMuch = 0.0;
|
||||||
if (event is RawKeyDownEvent) {
|
if (event is KeyDownEvent) {
|
||||||
howMuch = 1;
|
howMuch = 1;
|
||||||
} else if (event is RawKeyUpEvent) {
|
} else if (event is KeyUpEvent) {
|
||||||
howMuch = 0;
|
howMuch = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.data.logicalKey == LogicalKeyboardKey.keyS) {
|
if (event.logicalKey == LogicalKeyboardKey.keyS) {
|
||||||
_downForce = howMuch;
|
_downForce = howMuch;
|
||||||
} else if (event.data.logicalKey == LogicalKeyboardKey.keyW) {
|
} else if (event.logicalKey == LogicalKeyboardKey.keyW) {
|
||||||
_upForce = howMuch;
|
_upForce = howMuch;
|
||||||
} else if (event.data.logicalKey == LogicalKeyboardKey.keyD) {
|
} else if (event.logicalKey == LogicalKeyboardKey.keyD) {
|
||||||
_rightForce = howMuch;
|
_rightForce = howMuch;
|
||||||
} else if (event.data.logicalKey == LogicalKeyboardKey.keyA) {
|
} else if (event.logicalKey == LogicalKeyboardKey.keyA) {
|
||||||
_leftForce = howMuch;
|
_leftForce = howMuch;
|
||||||
} else if (event.data.logicalKey == LogicalKeyboardKey.numpadAdd &&
|
} else if (event.logicalKey == LogicalKeyboardKey.numpadAdd &&
|
||||||
event is RawKeyDownEvent) {
|
event is KeyDownEvent) {
|
||||||
camera.viewfinder.zoom = min(
|
camera.viewfinder.zoom = min(
|
||||||
camera.viewfinder.zoom + 0.1,
|
camera.viewfinder.zoom + 0.1,
|
||||||
5,
|
5,
|
||||||
);
|
);
|
||||||
} else if (event.data.logicalKey == LogicalKeyboardKey.numpadSubtract &&
|
} else if (event.logicalKey == LogicalKeyboardKey.numpadSubtract &&
|
||||||
event is RawKeyDownEvent) {
|
event is KeyDownEvent) {
|
||||||
camera.viewfinder.zoom = max(
|
camera.viewfinder.zoom = max(
|
||||||
camera.viewfinder.zoom - 0.1,
|
camera.viewfinder.zoom - 0.1,
|
||||||
0.1,
|
0.1,
|
||||||
|
|||||||
@ -7,6 +7,7 @@ version: 1.0.0+1
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
collection: ^1.18.0
|
collection: ^1.18.0
|
||||||
|
|||||||
@ -5,7 +5,7 @@ repository: https://github.com/flame-engine/flame/blob/main/packages/flame_isola
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=1.17.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -10,7 +10,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
collection: ^1.17.1
|
collection: ^1.17.1
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -10,7 +10,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=1.17.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
dev: ^1.0.0
|
dev: ^1.0.0
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
fast_noise: ^2.0.0
|
fast_noise: ^2.0.0
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -5,7 +5,7 @@ version: 5.2.0
|
|||||||
homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_riverpod
|
homepage: https://github.com/flame-engine/flame/tree/main/packages/flame_riverpod
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=1.17.0"
|
flutter: ^3.19.0
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
flutter:
|
flutter:
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
collection: ^1.17.1
|
collection: ^1.17.1
|
||||||
|
|||||||
@ -6,7 +6,7 @@ version: 1.0.0+1
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame_splash_screen: ^0.2.0
|
flame_splash_screen: ^0.2.0
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
|
|||||||
@ -10,7 +10,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.10.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
collection: ^1.17.1
|
collection: ^1.17.1
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.10.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -5,7 +5,7 @@ publish_to: none
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flame: ^1.15.0
|
flame: ^1.15.0
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
collection: ^1.17.1
|
collection: ^1.17.1
|
||||||
|
|||||||
@ -9,7 +9,7 @@ funding:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ^3.19.0
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
collection: ^1.17.1
|
collection: ^1.17.1
|
||||||
|
|||||||
Reference in New Issue
Block a user