diff --git a/packages/flame/lib/src/effects/color_effect.dart b/packages/flame/lib/src/effects/color_effect.dart index 3d86d26eee2..9149d54b629 100644 --- a/packages/flame/lib/src/effects/color_effect.dart +++ b/packages/flame/lib/src/effects/color_effect.dart @@ -53,5 +53,6 @@ class ColorEffect extends ComponentEffect { void reset() { super.reset(); target.getPaint(paintId).colorFilter = _original; + target.onChanged(); } } diff --git a/packages/flame/test/effects/color_effect_test.dart b/packages/flame/test/effects/color_effect_test.dart index 3af9deaedef..aeb74a52e66 100644 --- a/packages/flame/test/effects/color_effect_test.dart +++ b/packages/flame/test/effects/color_effect_test.dart @@ -96,6 +96,32 @@ void main() { }, ); + testWithFlameGame( + 'reset notifies the component of the restored color filter', + (game) async { + final component = TextComponent(text: 'foo'); + await game.ensureAdd(component); + + final effect = ColorEffect( + Colors.red, + EffectController(duration: 1), + ); + await component.ensureAdd(effect); + game.update(0.5); + expect( + component.paintedTextRenderer.style.foreground!.colorFilter, + isNotNull, + ); + + effect.reset(); + + expect( + component.paintedTextRenderer.style.foreground!.colorFilter, + isNull, + ); + }, + ); + testWithFlameGame( 'can be re-added in the component tree', (game) async {