From cb6ec4999d641f77ed38bea107ee5e33d4011e92 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira <62367544+tilucasoli@users.noreply.github.com> Date: Tue, 6 Jan 2026 19:30:43 -0300 Subject: [PATCH 1/2] refactor(core): simplify StyleSpecBuilder build method - Move didUpdateWidget after _handleControllerChange for better code organization - Remove redundant wrapping logic from StyleSpecBuilder.build() - Delegate StyleSpecProvider and RenderModifiers wrapping to StyleAnimationBuilder --- packages/mix/lib/src/core/style_builder.dart | 37 ++++++-------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/packages/mix/lib/src/core/style_builder.dart b/packages/mix/lib/src/core/style_builder.dart index 67194be94b..55bf834eda 100644 --- a/packages/mix/lib/src/core/style_builder.dart +++ b/packages/mix/lib/src/core/style_builder.dart @@ -69,16 +69,6 @@ class _StyleBuilderState> extends State> } } - @override - void didUpdateWidget(covariant StyleBuilder oldWidget) { - super.didUpdateWidget(oldWidget); - - // Handle controller changes - if (oldWidget.controller != widget.controller) { - _handleControllerChange(oldWidget); - } - } - void _handleControllerChange(StyleBuilder oldWidget) { // Dispose old internal controller if we owned it if (_ownsController) { @@ -102,6 +92,16 @@ class _StyleBuilderState> extends State> return inheritedStyle?.merge(widget.style) ?? widget.style; } + @override + void didUpdateWidget(covariant StyleBuilder oldWidget) { + super.didUpdateWidget(oldWidget); + + // Handle controller changes + if (oldWidget.controller != widget.controller) { + _handleControllerChange(oldWidget); + } + } + @override void dispose() { // Only dispose controllers we created internally @@ -173,23 +173,6 @@ class StyleSpecBuilder> extends StatelessWidget { @override Widget build(BuildContext context) { - // style.build returns StyleSpec - - // Pass the inner spec to the builder - Widget current = builder(context, styleSpec.spec); - - // Always wrap with StyleSpecProvider first - current = StyleSpecProvider(spec: styleSpec, child: current); - - if (styleSpec.widgetModifiers != null && - styleSpec.widgetModifiers!.isNotEmpty) { - // Apply modifiers if any - current = RenderModifiers( - widgetModifiers: styleSpec.widgetModifiers!, - child: current, - ); - } - return StyleAnimationBuilder( spec: styleSpec, From 961646f5659ef2c0eb2c903d97a32d6003c6a339 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira <62367544+tilucasoli@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:53:14 -0300 Subject: [PATCH 2/2] Revert "refactor(core): simplify StyleSpecBuilder build method" This reverts commit cb6ec4999d641f77ed38bea107ee5e33d4011e92. --- packages/mix/lib/src/core/style_builder.dart | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/mix/lib/src/core/style_builder.dart b/packages/mix/lib/src/core/style_builder.dart index 55bf834eda..97fbb6ff59 100644 --- a/packages/mix/lib/src/core/style_builder.dart +++ b/packages/mix/lib/src/core/style_builder.dart @@ -69,6 +69,16 @@ class _StyleBuilderState> extends State> } } + @override + void didUpdateWidget(covariant StyleBuilder oldWidget) { + super.didUpdateWidget(oldWidget); + + // Handle controller changes + if (oldWidget.controller != widget.controller) { + _handleControllerChange(oldWidget); + } + } + void _handleControllerChange(StyleBuilder oldWidget) { // Dispose old internal controller if we owned it if (_ownsController) { @@ -92,16 +102,6 @@ class _StyleBuilderState> extends State> return inheritedStyle?.merge(widget.style) ?? widget.style; } - @override - void didUpdateWidget(covariant StyleBuilder oldWidget) { - super.didUpdateWidget(oldWidget); - - // Handle controller changes - if (oldWidget.controller != widget.controller) { - _handleControllerChange(oldWidget); - } - } - @override void dispose() { // Only dispose controllers we created internally