From 57eb69cbff4197e327063e845e36233356fd1108 Mon Sep 17 00:00:00 2001 From: Lukas Klingsbo Date: Tue, 8 Sep 2026 21:44:31 +0200 Subject: [PATCH 1/2] fix: Notify the component when ColorEffect resets its color filter --- .../flame/lib/src/effects/color_effect.dart | 1 + .../flame/test/effects/color_effect_test.dart | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) 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..ee9acd06423 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.textRenderer.style.foreground!.colorFilter, + isNotNull, + ); + + effect.reset(); + + expect( + component.textRenderer.style.foreground!.colorFilter, + isNull, + ); + }, + ); + testWithFlameGame( 'can be re-added in the component tree', (game) async { From cf3f86f89415e24cdfcb87b5f2cea5de82f91dee Mon Sep 17 00:00:00 2001 From: Lukas Klingsbo Date: Wed, 9 Sep 2026 09:41:25 +0200 Subject: [PATCH 2/2] test: Assert on the painted text renderer in the ColorEffect reset test --- packages/flame/test/effects/color_effect_test.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/flame/test/effects/color_effect_test.dart b/packages/flame/test/effects/color_effect_test.dart index ee9acd06423..aeb74a52e66 100644 --- a/packages/flame/test/effects/color_effect_test.dart +++ b/packages/flame/test/effects/color_effect_test.dart @@ -109,14 +109,14 @@ void main() { await component.ensureAdd(effect); game.update(0.5); expect( - component.textRenderer.style.foreground!.colorFilter, + component.paintedTextRenderer.style.foreground!.colorFilter, isNotNull, ); effect.reset(); expect( - component.textRenderer.style.foreground!.colorFilter, + component.paintedTextRenderer.style.foreground!.colorFilter, isNull, ); },