diff --git a/packages/flame/lib/src/components/sprite_animation_group_component.dart b/packages/flame/lib/src/components/sprite_animation_group_component.dart index c1fa78be37b..e7ff15989d7 100644 --- a/packages/flame/lib/src/components/sprite_animation_group_component.dart +++ b/packages/flame/lib/src/components/sprite_animation_group_component.dart @@ -140,6 +140,12 @@ class SpriteAnimationGroupComponent extends PositionComponent /// /// Will update [size] if [autoResize] is true. set current(T? value) { + assert(_animations != null, 'Animations not set'); + assert( + _animations!.keys.contains(value), + 'Animation not found for key: $value', + ); + final changed = value != current; _current = value; _resizeToSprite(); diff --git a/packages/flame/lib/src/components/sprite_group_component.dart b/packages/flame/lib/src/components/sprite_group_component.dart index aab4d3a07fc..8b77efb2d1a 100644 --- a/packages/flame/lib/src/components/sprite_group_component.dart +++ b/packages/flame/lib/src/components/sprite_group_component.dart @@ -68,6 +68,9 @@ class SpriteGroupComponent extends PositionComponent /// /// Will update [size] if [autoResize] is true. set current(T? value) { + assert(_sprites != null, 'Sprites not set'); + assert(_sprites!.keys.contains(value), 'Sprite not found for key: $value'); + final changed = _current != value; _current = value; _resizeToSprite(); diff --git a/packages/flame/test/components/sprite_animation_group_component_test.dart b/packages/flame/test/components/sprite_animation_group_component_test.dart index 187a1df3c70..3e2f58040ee 100644 --- a/packages/flame/test/components/sprite_animation_group_component_test.dart +++ b/packages/flame/test/components/sprite_animation_group_component_test.dart @@ -45,6 +45,16 @@ Future main() async { component.current = _AnimationState.running; expect(component.animation, animation2); }); + + test('Asserts that map contains key', () { + expect( + () { + SpriteAnimationGroupComponent(animations: {}).current = + 'non-existent-key'; + }, + failsAssert('Animation not found for key: non-existent-key'), + ); + }); }); group('SpriteAnimationGroupComponent.shouldRemove', () { diff --git a/packages/flame/test/components/sprite_group_component_test.dart b/packages/flame/test/components/sprite_group_component_test.dart index 73f5117994f..7a9ce07152c 100644 --- a/packages/flame/test/components/sprite_group_component_test.dart +++ b/packages/flame/test/components/sprite_group_component_test.dart @@ -34,6 +34,16 @@ Future main() async { component.current = _SpriteState.running; expect(component.sprite, sprite2); }); + + test('Asserts that map contains key', () { + expect( + () { + SpriteGroupComponent(sprites: {}).current = + 'non-existent-key'; + }, + failsAssert('Sprite not found for key: non-existent-key'), + ); + }); }); group('SpriteComponent.autoResize', () {