mix
An expressive way to effortlessly build design systems in Flutter.
2.1.0
22K downloads/mo
#2114 most downloaded on pub.dev
btwld/mix
What this package is like to depend on
Last release 4 days ago
19 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 32 of 33 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
65 releases · first in 2021
18 releases in the last 12 months
see the full history below
Release timeline
65 releases · Jun 2021 to Aug 2026Releases
latest 60 of 65-
2.2.0-beta.519 Aug 2026 pre-releaseRelease notes
Open source →Content-sized GridTrack.auto() row tracks; omitted GridBox autoRows now
defaults to auto instead of throwing (breaking). Generated Styler field
metadata via StylerFieldMetadata.$stylerFieldNames.Release notes
Open source →New features
GridTrack.auto(): Content-sized row tracks forrowsandautoRows. An auto row sizes to its tallest child's natural height at the resolved column width, then stretches shorter children to fill the row. Use it — or omitautoRows— when child heights are unknown, such as a card grid in a scroll view.autois vertical-only;columnsrejects it. Grids built only from fixed andfrtracks are unaffected and still lay each child out once.- Generated Styler field metadata: Every generated Styler now exposes its
complete source-field inventory through
StylerFieldMetadata.$stylerFieldNames, allowing schema tooling to validate coverage without maintaining duplicate string manifests. Handwritten and previously generated Stylers do not implement this capability until they opt in or are regenerated.
Breaking changes
- Omitted GridBox
autoRowsno longer throws: Children needing more rows than were declared previously required an explicitautoRowstrack, or the Grid threw. OmittedautoRowsnow defaults toGridTrack.auto(), so implicit rows size to their tallest child — both when no rows are declared and when explicit rows run out. Fractional rows still require a bounded height, and fixed tracks remain hard constraints. If you relied on the throw to catch an under-declared Grid, declarerowsexplicitly or setautoRowsto the track you want repeated.
-
2.2.0-beta.410 Aug 2026 pre-releaseRelease notes
Open source →Fixes
- Variant merge priority follows declared state dependencies: Priority now
groups active variants by whether they declare
ContextVariant.widgetStateDependenciesrather than by whether they are aWidgetStateVariant, soonFocusVisible(...)competes by declaration order instead of always losing to any widget-state variant sharing a property, which had been silently replacing focus rings. Variants built onContextVariant.not(...)move with their inner variant, soonEnabled(...)now outranks an ambient variant such asonDark(...)declared after it. - Declaration order within a priority group is reliable: Grouping is a
stable partition rather than a
List.sort, which fell back to an unstable quicksort at 32 elements and could reorder equal-priority variants in styles that large.
- Variant merge priority follows declared state dependencies: Priority now
groups active variants by whether they declare
-
2.2.0-beta.310 Aug 2026 pre-releaseRelease notes
Open source →New features
ContextVariant.widgetStateDependencies: Context variants now declare the widget states they read, so custom variants participate in nested dependency discovery instead of relying on the framework recognizing a specific variant type. Automatic self-tracking is limited to pointer-driven hover and press; other states still require an ancestor scope or external controller.- Typed focus-visible variants: Added
FocusVisibleVariant,ContextVariant.focusVisible(), andonFocusVisible(...), which apply while focus is highlighted in Flutter's traditional (keyboard/directional) mode. - Pressable semantics roles: Added
PressableSemanticsRolewith button, link, and neutral roles.PressableBoxnow forwards the full Pressable focus, keyboard, controller, feedback, cursor, action, and semantics surface.
Breaking changes
- Pressable input and semantics: Replaced
semanticButtonLabelwithsemanticsLabel, addedsemanticsRole, and removed the deprecatedonKeycallback. UseonKeyEventfor custom keyboard handling. - Reserved activation keys: While it holds primary focus and can activate,
Pressable owns unmodified Space, Enter, numpad Enter, select, and game button
A so it can model held-key state consistently. Override those direct key
bindings with
onKeyEvent.onPressstill honorsActivateIntentdispatched by remapped shortcuts or programmatic invocation, and customactionscan override that binding or handle other intents. Only those five reserved keys are claimed raw; they are left untouched when a descendant holds focus, and modified chords are left to application shortcuts. A link-role Pressable activates with Enter but leaves Space available for scrolling.
Fixes
- Nested widget-state discovery:
Style.widgetStatesnow discovers state requirements recursively through nested and negated context-variant branches with identity-based cycle protection, so variants likeonDark(BoxStyler().onHovered(...))andonEnabled(...)are tracked instead of silently never activating. Branches under un-applied named variants are deliberately not tracked because they cannot activate untilapplyVariantshoists them to the top level. - Interaction detector is mounted only when it can help:
StyleBuildernow installs its pointer-interaction detector only for the states that detector actually drives (hovered/pressed). States such asdisabledandfocusedcan only come from an externalWidgetStatesControlleror an ancestor scope, so styles depending solely on those no longer gain an opaque hit-test target that swallowed pointer events aimed at widgets beneath them, and no longer hijack the state scope of descendants that do track hover. - Pressable lifecycle: Pointer and keyboard press sources are combined without clearing each other, keyboard activation fires once on key-up, cancellation clears held state, focus-visible follows Flutter input modality, and disabled controls ignore custom key handling and expose neither semantic nor custom actions.
- Press state ends with the gesture: A pointer that drifts past the tap slop stops counting as a press, so items no longer stay visually pressed while a list scrolls under the finger.
- Focus-visible scope: The focus-highlight scope is now provided wherever
widget states are, so
onFocusVisiblealso resolves — and repaints on input modality changes — outside aPressable. AWidgetStateStyleOverrideforcingfocusednow applies it too, matchingonFocused.
-
2.2.0-beta.206 Aug 2026 pre-releaseRelease notes
Open source →New features
- GridBox: Added the public
GridTrack,GridBoxSpec,GridBoxStyler, andGridBoxAPI with fixed/fractional tracks, explicit and repeated rows, gaps, row-major placement, clipping, and localBreakpoint-based constraint branches. Equal fractional columns useequalColumns; numeric tracks and gaps support Mix tokens; compatible geometry participates in implicit style animation. - WrapBox: Added the public
WrapSpec,WrapStyler,WrapBoxSpec,WrapBoxStyler, andWrapBoxfamily with flattened fluent Wrap styling, collision-safe Box/Wrap names, generated constructors and factories, and a runnable gallery example.
- GridBox: Added the public
-
2.2.0-beta.122 Jul 2026 pre-releaseRelease notes
Open source →Fixes
- Box shadow blur styles:
BoxShadowMixnow preserves non-defaultBoxShadow.blurStylevalues across construction, conversion, merging, resolution, diagnostics, equality, and its fluent and factory APIs (#992).
- Box shadow blur styles:
-
2.2.0-beta.016 Jul 2026 pre-releaseRelease notes
Open source →New features
- Style-state override scope:
WidgetStateStyleOverridelets tooling and tests force widget-state variants through normalstyleresolution, taking precedence over controllers and nested interaction providers without changing component behavior. CssKeywordLinearTransform: Adds a reusable bounds-awareGradientTransformfor CSS linear-gradient keyword directions, so Tailwind corner gradients can round-trip through schema tooling without losing visual parity.- Typed context variants:
BrightnessVariant,BreakpointVariant,OrientationVariant,DirectionalityVariant,PlatformVariant,WebVariant, andNotVariantare now public value objects behind theirContextVariantfactories, giving schema and tooling code stable typed data to inspect instead of parsing keys.
Fixes
- Variant merge-key collisions: Variant styles now merge by an opaque,
semantic identity instead of the human-readable
Variant.key. Equivalent named, enum-backed, and built-in context variants still coalesce, while unrelated variants with the same label retain their own predicates. Dynamic builders keep their existing build-then-merge behavior and use function equality instead of a hash string for merge identity. - Context variant equality:
ContextVariant.brightness,ContextVariant.breakpoint,ContextVariant.orientation,ContextVariant.directionality,ContextVariant.platform,ContextVariant.web, andContextVariant.notnow compare by their typed values instead of identity, so equivalent variants deduplicate and round-trip predictably. - Default text style modifier merge: Partial
DefaultTextStyleModifierMixoverrides now merge with the ambientDefaultTextStyleinstead of replacing inherited text style fields.
API changes
tokenFromReferenceValueis now public for schema/tooling code that needs to identify unresolved token references, including sentinel-backedDoubleRefvalues, without importing Mix internals.
- Style-state override scope:
-
2.1.026 Jun 2026Release notes
Open source →This release adds context-derived token resolution and richer animation configuration, fixes variant resolution in nested styles and animation interpolation edge cases, and hardens the token-reference system while tightening the public API around the internal token registry.
New features
ContextToken: Zero-config token whose value is derived directly from the build context, so context-dependent values resolve without first registering a token in a scope (#938).- Spring animation helpers:
AnimationConfigstatics are now factories, with added spring-curve wrappers for configuring physics-based transitions (#937).
Fixes
- Variants in nested styles: A
Stylenested inside another style'sProp(a component sub-style) now applies its own context variants — widget states, brightness, breakpoints. PreviouslyProp.resolvePropresolved the merged nested style viaresolve(), which skips variants. No-op for nested styles without variants (#926). Matrix4interpolation: Tween a transform against the identity matrix when one endpoint is null, instead of producing a degenerate result (#931).- Animation config fallback: Fall back to the previous animation config when a transition resolves to null, rather than dropping the animation (#930).
DoubleRefsentinel collisions: Two distinctMixToken<double>instances whose hashes landed in the same bucket previously aliased to the same sentinel. The registry now hands out sentinels from a monotonic counter, so sentinels are unique among registered tokens; a reverse cache re-issues the same sentinel for the same token.BreakpointToken.resolveno longer masks type errors: the built-inmobile/tablet/desktopdefaults are only used when the scope is absent or omits the entry. A scope entry of the wrong type now surfaces the underlyingStateErrorfromMixScope.getToken.- Numeric directives on multi-source props:
Prop.value(x).mergeProp( Prop.token(t)).multiply(2)and similar chains now resolve instead of throwing —_asPropNumrebuilds every source asProp<num>and merges in order. Prop.valuenull safety: the token-ref detection branch no longer crashes whenVis nullable and the supplied value isnull.
API changes
ValueRef.noSuchMethodthrowsUnsupportedError(wasUnimplementedError). The detailed message is unchanged; only the error type differs. Any user code that catches the specific class needs to switch.getReferenceValueno longer silently casts an unsupported token type — it now throwsUnsupportedErrornaming the token andT. All concreteMixTokensubclasses overridecall()and never hit this path; the change only affects customMixTokenauthors who relied on the cast.- Removed from the public API:
clearTokenRegistryandgetTokenFromValueare no longer re-exported frompackage:mix/mix.dart(both are now@internal; tests reach them viapackage:mix/src/...). The publicDoubleRef(double)constructor was removed —DoubleRefinstances are only ever obtained throughMixToken<double>.call(). For an explicit, type-safe handle to a double token, useProp.token(token). isAnyTokenRefdrops the brittleruntimeType.toString().endsWith(...)check; aPropcarrying aTokenSourceis now the sole class-based invariant.
Other changes
StyleWidgetdefaults toIdentityStyle<Spec>, giving widgets a well-defined no-op style when none is supplied (#921).
Release notes
Open source →This release adds context-derived token resolution and richer animation configuration, fixes variant resolution in nested styles and animation interpolation edge cases, and hardens the token-reference system while tightening the public API around the internal token registry.
New features
-
ContextToken : Zero-config token whose value is derived directly from the build context, so context-dependent values resolve without first registering a token in a scope (#938).
-
Spring animation helpers: AnimationConfig statics are now factories, with added spring-curve wrappers for configuring physics-based transitions (#937).
Fixes
-
Variants in nested styles: A Style nested inside another style's Prop (a component sub-style) now applies its own context variants — widget states, brightness, breakpoints. Previously Prop.resolveProp resolved the merged nested style via resolve() , which skips variants. No-op for nested styles without variants (#926).
-
Matrix4 interpolation: Tween a transform against the identity matrix when one endpoint is null, instead of producing a degenerate result (#931).
-
Animation config fallback: Fall back to the previous animation config when a transition resolves to null, rather than dropping the animation (#930).
-
DoubleRef sentinel collisions: Two distinct MixToken<double> instances whose hashes landed in the same bucket previously aliased to the same sentinel. The registry now hands out sentinels from a monotonic counter, so sentinels are unique among registered tokens; a reverse cache re-issues the same sentinel for the same token.
-
BreakpointToken.resolve no longer masks type errors: the built-in mobile / tablet / desktop defaults are only used when the scope is absent or omits the entry. A scope entry of the wrong type now surfaces the underlying StateError from MixScope.getToken .
-
Numeric directives on multi-source props: Prop.value(x).mergeProp( Prop.token(t)).multiply(2) and similar chains now resolve instead of throwing — _asPropNum rebuilds every source as Prop<num> and merges in order.
-
Prop.value null safety: the token-ref detection branch no longer crashes when V is nullable and the supplied value is null .
API changes
-
ValueRef.noSuchMethod throws UnsupportedError (was UnimplementedError ). The detailed message is unchanged; only the error type differs. Any user code that catches the specific class needs to switch.
-
getReferenceValue no longer silently casts an unsupported token type — it now throws UnsupportedError naming the token and T . All concrete MixToken subclasses override call() and never hit this path; the change only affects custom MixToken authors who relied on the cast.
-
Removed from the public API: clearTokenRegistry and getTokenFromValue are no longer re-exported from package:mix/mix.dart (both are now @internal ; tests reach them via package:mix/src/... ). The public DoubleRef(double) constructor was removed — DoubleRef instances are only ever obtained through MixToken<double>.call() . For an explicit, type-safe handle to a double token, use Prop.token(token) .
-
isAnyTokenRef drops the brittle runtimeType.toString().endsWith(...) check; a Prop carrying a TokenSource is now the sole class-based invariant.
Other changes
- StyleWidget defaults to IdentityStyle<Spec> , giving widgets a well-defined no-op style when none is supplied (#921).
-
2.0.320 May 2026Release notes
Open source →This release adds finer-grained control over scope inheritance and theming, and restores compatibility with newer Flutter SDKs.
New features
MixScope.inherit: Opt into merging with the nearest ancestorMixScopeinstead of replacing it, so nested scopes can extend tokens and breakpoints without re-declaring them (#914).ColorRefdirective overrides: Non-deprecatedColormethods onColorRef(e.g.withValues) are now overridden to return a ref carrying a directive, keeping color tokens unresolved until rendering (#908).
Fixes
- Flutter SDK compatibility: Removed
TextDecorationRefso Mix builds against newer Flutter SDKs whereTextDecorationis no longer extendable (#913).
Release notes
Open source →This release adds finer-grained control over scope inheritance and theming, and restores compatibility with newer Flutter SDKs.
New features
-
MixScope.inherit : Opt into merging with the nearest ancestor MixScope instead of replacing it, so nested scopes can extend tokens and breakpoints without re-declaring them (#914).
-
ColorRef directive overrides: Non-deprecated Color methods on ColorRef (e.g. withValues ) are now overridden to return a ref carrying a directive, keeping color tokens unresolved until rendering (#908).
Fixes
- Flutter SDK compatibility: Removed TextDecorationRef so Mix builds against newer Flutter SDKs where TextDecoration is no longer extendable (#913).
-
2.0.218 Apr 2026Release notes
Open source →This release completes the 2.0 Styler migration by removing the remaining legacy utility surface, and adds new ergonomic shorthands and variant tooling.
Removals
- Legacy utility classes and mutable stylers: All remaining deprecated utility classes and mutable stylers were removed, finishing the transition to the Styler-first API (#901).
New features
- EnumVariant mixin: Define type-safe enum-based variants without hand-written boilerplate (#894).
- DefaultTextStylerModifier: Propagate default
TextStylervalues down the widget tree via a modifier, matching the pattern used by other default stylers (#905). - Text shadow shorthand: Dot-shorthand entry point for configuring text shadows (#890).
- Uniform border shorthand: Dot-shorthand for applying a uniform border in one call (#889).
MixStylerexport:MixStyleris now exported from the public API, matching the documentation (#900).
Fixes
- RotateModifier lerp: Interpolate the rotation angle directly instead of the transform matrix, producing smoother rotation transitions (#898).
Release notes
Open source →This release completes the 2.0 Styler migration by removing the remaining legacy utility surface, and adds new ergonomic shorthands and variant tooling.
Removals
- Legacy utility classes and mutable stylers: All remaining deprecated utility classes and mutable stylers were removed, finishing the transition to the Styler-first API (#901).
New features
-
EnumVariant mixin: Define type-safe enum-based variants without hand-written boilerplate (#894).
-
DefaultTextStylerModifier: Propagate default TextStyler values down the widget tree via a modifier, matching the pattern used by other default stylers (#905).
-
Text shadow shorthand: Dot-shorthand entry point for configuring text shadows (#890).
-
Uniform border shorthand: Dot-shorthand for applying a uniform border in one call (#889).
-
MixStyler export: MixStyler is now exported from the public API, matching the documentation (#900).
Fixes
- RotateModifier lerp: Interpolate the rotation angle directly instead of the transform matrix, producing smoother rotation transitions (#898).
-
2.0.127 Mar 2026Release notes
Open source →This patch release improves day-to-day styling ergonomics and makes looping animations more reliable in edge cases.
New features
- Dot shorthand coverage expanded: Static factory constructors are now available for all Styler instance methods, making Dart 3.11 shorthand syntax available across the full styling surface (#884).
Fixes
- Looping animations: Loop driver updates now use the latest configured duration so repeated animations stay in sync with configuration changes (#885).
- Matrix interpolation stability: Matrix lerp now safely handles null endpoints to prevent snapping artifacts during transitions (#882).
Release notes
Open source →This patch release improves day-to-day styling ergonomics and makes looping animations more reliable in edge cases.
New features
- Dot shorthand coverage expanded: Static factory constructors are now available for all Styler instance methods, making Dart 3.11 shorthand syntax available across the full styling surface (#884).
Fixes
-
Looping animations: Loop driver updates now use the latest configured duration so repeated animations stay in sync with configuration changes (#885).
-
Matrix interpolation stability: Matrix lerp now safely handles null endpoints to prevent snapping artifacts during transitions (#882).
-
2.0.025 Mar 2026Release notes
Open source →Mix 2.0 is a ground-up rethink of how styling works in Flutter. This release introduces Styler-first APIs with fluent chaining, leverages Dart 3.11+ dot shorthands for concise syntax, modernizes the widget modifier model, and adds full code generation for specs and stylers via
mix_annotations/mix_generator.Breaking changes
- Styler APIs replace legacy
$utilities.BoxStyler(),TextStyler(),IconStyler(), and related stylers are the primary styling surface. All deprecated spec utilities, legacy widget/style entry points, and unused enum/color helpers have been removed (#806, #870). - Widget modifiers now use
WidgetModifierConfigconstruction instead of older patterns (#775). - Internal resolver usage:
resolvePropis@internal; useMixOps.resolvewhere you relied on the previous surface (#833). - Minimum SDK: Dart
>=3.11.0, Flutter>=3.41.0. - Styled widget naming: Legacy
Styled*widget names deprecated in favor of new naming conventions (#619). - NestedStyleAttribute removed: Migrate to direct
Styleusage (#644). - SpecConfiguration/SpecStyle removed from environment (#656).
- MixWidgetState renamed to
MixWidgetStateModel(#698);MixWidgetStateControllerdeprecated (#586).
New features
- Fluent Styler API: Build styles with chained method calls —
BoxStyler().color(Colors.blue).size(100, 100).paddingAll(16). - Styler dot shorthands: Static factory constructors on stylers for Dart 3.11 dot-notation syntax (#857).
- Named variants:
applyVariants()for applyingNamedVariantsets in one place (#801). - Style lookup:
Style.of()andStyle.maybeOf()for reading resolved styles from the widget tree (#784). - Layout widgets: Callable
Stack/FlexBox(and related) for concise composition;Stack/StackBoxrestructured for the 2.0 model (#779). - Widget builder pattern: Ergonomic Mix API through widget builders (#754).
- Default widget styles: Mix widgets ship with sensible defaults out of the box (#759).
- Numeric styling: Number directives and extensions for numeric transforms in styles (#785).
- Defaults:
DefaultStyledTextandDefaultStyledIcontypedefs for consistent defaults (#767). - Codegen:
MixableSpec/MixableStylergeneration,MixableField.setterType, and Style-class extension support inmix_generator(#835, #846, #845). - Animation loops: Loop support for Phase and Keyframe animations (#824).
- Unified attributes:
SpecUtility,Style, andAttributesunified as compatible values (#643). - Style-focused modifiers and specs: Generated modifiers and specs for streamlined styling (#652).
- Builder optimization: Improved style builder performance (#629).
Improvements
- Widget state variant mixins split into focused files; unsupported widget state variants removed (#768, #769).
StyleSpecBuilderbuild path simplified (#825).- Specs standardized with
@immutable; clearer equality behavior (#821). BaseStyleutility class introduced for improved styling architecture (#659).- Widget state handling moved from
MixBuildertoSpecBuilder(#651). - Docs, examples, and codebase updated to dot-shorthand / Styler syntax throughout.
Fixes
- Variants: More reliable
VariantStylemerge and widget state handling inStyleBuilder(#774, #765). - copyWith / lerp: Nullable
copyWithparameters; lerp respects nullability (including generator fixes) (#848, #849). - Stylers:
chaingetter onStackStyler;AnimationStyleMixinonFlexBoxStylerandStackBoxStyler(#818, #819). - Animations: Visibility stays correct through the end of exit animations (#771). Animation drivers no longer reset when animation configuration is unchanged (#859).
- Equality:
Mixablenow extendsEqualityMixininstead ofStyleElement(#648). - CopyWith: Overriding bug fixed (#622).
- Breakpoints: Breakpoint utility merge exception resolved (#758).
Release notes
Open source →Mix 2.0 is a ground-up rethink of how styling works in Flutter. This release introduces Styler-first APIs with fluent chaining, leverages Dart 3.11+ dot shorthands for concise syntax, modernizes the widget modifier model, and adds full code generation for specs and stylers via mix_annotations / mix_generator .
Breaking changes
-
Styler APIs replace legacy $ utilities. BoxStyler() , TextStyler() , IconStyler() , and related stylers are the primary styling surface. All deprecated spec utilities, legacy widget/style entry points, and unused enum/color helpers have been removed (#806, #870).
-
Widget modifiers now use WidgetModifierConfig construction instead of older patterns (#775).
-
Internal resolver usage: resolveProp is @internal ; use MixOps.resolve where you relied on the previous surface (#833).
-
Minimum SDK: Dart >=3.11.0 , Flutter >=3.41.0 .
-
Styled widget naming: Legacy Styled* widget names deprecated in favor of new naming conventions (#619).
-
NestedStyleAttribute removed: Migrate to direct Style usage (#644).
-
SpecConfiguration/SpecStyle removed from environment (#656).
-
MixWidgetState renamed to MixWidgetStateModel (#698); MixWidgetStateController deprecated (#586).
New features
-
Fluent Styler API: Build styles with chained method calls — BoxStyler().color(Colors.blue).size(100, 100).paddingAll(16) .
-
Styler dot shorthands: Static factory constructors on stylers for Dart 3.11 dot-notation syntax (#857).
-
Named variants: applyVariants() for applying NamedVariant sets in one place (#801).
-
Style lookup: Style.of() and Style.maybeOf() for reading resolved styles from the widget tree (#784).
-
Layout widgets: Callable Stack / FlexBox (and related) for concise composition; Stack / StackBox restructured for the 2.0 model (#779).
-
Widget builder pattern: Ergonomic Mix API through widget builders (#754).
-
Default widget styles: Mix widgets ship with sensible defaults out of the box (#759).
-
Numeric styling: Number directives and extensions for numeric transforms in styles (#785).
-
Defaults: DefaultStyledText and DefaultStyledIcon typedefs for consistent defaults (#767).
-
Codegen: MixableSpec / MixableStyler generation, MixableField.setterType , and Style-class extension support in mix_generator (#835, #846, #845).
-
Animation loops: Loop support for Phase and Keyframe animations (#824).
-
Unified attributes: SpecUtility , Style , and Attributes unified as compatible values (#643).
-
Style-focused modifiers and specs: Generated modifiers and specs for streamlined styling (#652).
-
Builder optimization: Improved style builder performance (#629).
Improvements
-
Widget state variant mixins split into focused files; unsupported widget state variants removed (#768, #769).
-
StyleSpecBuilder build path simplified (#825).
-
Specs standardized with @immutable ; clearer equality behavior (#821).
-
BaseStyle utility class introduced for improved styling architecture (#659).
-
Widget state handling moved from MixBuilder to SpecBuilder (#651).
-
Docs, examples, and codebase updated to dot-shorthand / Styler syntax throughout.
Fixes
-
Variants: More reliable VariantStyle merge and widget state handling in StyleBuilder (#774, #765).
-
copyWith / lerp: Nullable copyWith parameters; lerp respects nullability (including generator fixes) (#848, #849).
-
Stylers: chain getter on StackStyler ; AnimationStyleMixin on FlexBoxStyler and StackBoxStyler (#818, #819).
-
Animations: Visibility stays correct through the end of exit animations (#771). Animation drivers no longer reset when animation configuration is unchanged (#859).
-
Equality: Mixable now extends EqualityMixin instead of StyleElement (#648).
-
CopyWith: Overriding bug fixed (#622).
-
Breakpoints: Breakpoint utility merge exception resolved (#758).
- Styler APIs replace legacy
-
2.0.0-rc.106 Feb 2026 pre-releaseNothing published for this version
-
2.0.0-rc.017 Nov 2025 pre-releaseNothing published for this version
-
2.0.0-dev.520 Oct 2025 pre-releaseNothing published for this version
-
2.0.0-dev.430 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-dev.329 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-dev.222 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-dev.104 Aug 2025 pre-releaseNothing published for this version
-
2.0.0-beta.120 Sep 2025 pre-releaseNothing published for this version
-
1.7.002 Jul 2025Release notes
Open source →- REFACTOR: Implement BaseStyle utility class and improve styling architecture (#659)
- REFACTOR: Remove SpecConfiguration and SpecStyle from environment (#656)
- REFACTOR: Move widget state handling from MixBuilder to SpecBuilder (#651).
- REFACTOR: Rename WidgetModifiersData to WidgetModifiersConfig (#649).
- REFACTOR: Fix deprecations and modernize codebase (#647).
- REFACTOR: Remove NestedStyleAttribute and migrate to direct Style usage (#644).
- REFACTOR: Deprecate
MixWidgetStateController(#586). - REFACTOR: Use WidgetState instead of MixWidgetState (#582).
- FIX: Change Mixable to extend EqualityMixin instead of StyleElement (#648).
- FIX: CopyWith overriding bug (#622).
- FEAT: builder optimization (#629).
- FEAT: deprecate styled widgets in favor of new naming conventions (#619).
- FEAT: Implementing duration extension for int (#634).
- FEAT: Create MixBuilder (#581).
- FEAT: Add generated style-focused modifiers and specs (#652).
- FEAT: Unify SpecUtility, Style, and Attributes as compatible values (#643).
- FEAT: Add utilities for animatedData (#660).
- FEAT: Add focused style classes for spec utilities (#677)
Release notes
Open source →- REFACTOR: Implement BaseStyle utility class and improve styling architecture #659
- REFACTOR: Remove SpecConfiguration and SpecStyle from environment (#656)
- REFACTOR: Move widget state handling from MixBuilder to SpecBuilder (#651).
- REFACTOR: Rename WidgetModifiersData to WidgetModifiersConfig (#649).
- REFACTOR: Fix deprecations and modernize codebase (#647).
- REFACTOR: Remove NestedStyleAttribute and migrate to direct Style usage (#644).
- REFACTOR: Deprecate
MixWidgetStateController(#586). - REFACTOR: Use WidgetState instead of MixWidgetState (#582).
- FIX: Change Mixable to extend EqualityMixin instead of StyleElement (#648).
- FIX: CopyWith overriding bug (#622).
- FEAT: builder optimization (#629).
- FEAT: deprecate styled widgets in favor of new naming conventions (#619).
- FEAT: Implementing duration extension for int (#634).
- FEAT: Create MixBuilder (#581).
- FEAT: Add generated style-focused modifiers and specs (#652).
- FEAT: Unify SpecUtility, Style, and Attributes as compatible values (#643).
- FEAT: Add utilities for animatedData (#660).
- FEAT: Add focused style classes for spec utilities (#677)
Release notes
Open source →-
REFACTOR : Implement BaseStyle utility class and improve styling architecture #659
-
REFACTOR : Remove SpecConfiguration and SpecStyle from environment (#656)
-
REFACTOR : Move widget state handling from MixBuilder to SpecBuilder (#651).
-
REFACTOR : Rename WidgetModifiersData to WidgetModifiersConfig (#649).
-
REFACTOR : Fix deprecations and modernize codebase (#647).
-
REFACTOR : Remove NestedStyleAttribute and migrate to direct Style usage (#644).
-
REFACTOR : Deprecate MixWidgetStateController (#586).
-
REFACTOR : Use WidgetState instead of MixWidgetState (#582).
-
FIX : Change Mixable to extend EqualityMixin instead of StyleElement (#648).
-
FIX : CopyWith overriding bug (#622).
-
FEAT : builder optimization (#629).
-
FEAT : deprecate styled widgets in favor of new naming conventions (#619).
-
FEAT : Implementing duration extension for int (#634).
-
FEAT : Create MixBuilder (#581).
-
FEAT : Add generated style-focused modifiers and specs (#652).
-
FEAT : Unify SpecUtility, Style, and Attributes as compatible values (#643).
-
FEAT : Add utilities for animatedData (#660).
-
FEAT : Add focused style classes for spec utilities (#677)
-
1.7.0-beta.023 Jun 2025 pre-releaseRelease notes
Open source →- REFACTOR: Implement BaseStyle utility class and improve styling architecture (#659)
- REFACTOR: Remove SpecConfiguration and SpecStyle from environment (#656)
- REFACTOR: Move widget state handling from MixBuilder to SpecBuilder (#651).
- REFACTOR: Rename WidgetModifiersData to WidgetModifiersConfig (#649).
- REFACTOR: Fix deprecations and modernize codebase (#647).
- REFACTOR: Remove NestedStyleAttribute and migrate to direct Style usage (#644).
- REFACTOR: Deprecate
MixWidgetStateController(#586). - REFACTOR: Use WidgetState instead of MixWidgetState (#582).
- FIX: Change Mixable to extend EqualityMixin instead of StyleElement (#648).
- FIX: CopyWith overriding bug (#622).
- FEAT: builder optimization (#629).
- FEAT: deprecate styled widgets in favor of new naming conventions (#619).
- FEAT: Implementing duration extension for int (#634).
- FEAT: Create MixBuilder (#581).
- FEAT: Add generated style-focused modifiers and specs (#652).
- FEAT: Unify SpecUtility, Style, and Attributes as compatible values (#643).
- FEAT: Add utilities for animatedData (#660).
- FEAT: Add focused style classes for spec utilities (#677)
-
1.6.031 Mar 2025Release notes
Open source →- REFACTOR: Rename
MixablePropertytoMixableType(#574) - REFACTOR: mix generator clean up and mix semantic changes (#569)
- CHORE: Update min version compatibility (#572)
Release notes
Open source →-
REFACTOR : Rename MixableProperty to MixableType (#574)
-
REFACTOR : mix generator clean up and mix semantic changes (#569)
-
CHORE : Update min version compatibility (#572)
- REFACTOR: Rename
-
1.5.410 Feb 2025 -
1.5.306 Dec 2024Release notes
Open source →- REFACTOR: Solve dcm lint issues (#519).
- FIX: Order of modifiers implementation on Box, Image and Text (#529).
- FIX: reset modifiers and directives when using fluentAPI (#482).
- FEAT: Add spring curve (#503).
- FEAT: Create StrokeAlignUtility (#496).
- FEAT: Utilities for text height behavior (#495).
- FEAT: Rewrite FlexBox as a Mix's primitive component (#517).
- FEAT: Add
SpecConfiguration(#483). - DOCS: Add section for
TokenResolver(#537).
Release notes
Open source →- REFACTOR: Solve dcm lint issues (#519).
- FIX: Order of modifiers implementation on Box, Image and Text (#529).
- FIX: reset modifiers and modifiers when using fluentAPI (#482).
- FEAT: Add spring curve (#503).
- FEAT: Create StrokeAlignUtility (#496).
- FEAT: Utilities for text height behavior (#495).
- FEAT: Rewrite FlexBox as a Mix's primitive component (#517).
- FEAT: Add
SpecConfiguration(#483). - DOCS: Add section for
TokenResolver(#537).
mix-v1.5.2- REFACTOR: ShapeBorder merge (#490).
- FEAT: Improve error messages (#491).
- FEAT: add error state to MixWidgetState (#489).
mix-v1.5.1- FEAT: Add MixOutlinedBorder (#487).
Release notes
Open source →-
REFACTOR : Solve dcm lint issues (#519).
-
FIX : Order of modifiers implementation on Box, Image and Text (#529).
-
FIX : reset modifiers and modifiers when using fluentAPI (#482).
-
FEAT : Add spring curve (#503).
-
FEAT : Create StrokeAlignUtility (#496).
-
FEAT : Utilities for text height behavior (#495).
-
FEAT : Rewrite FlexBox as a Mix's primitive component (#517).
-
FEAT : Add SpecConfiguration (#483).
-
DOCS : Add section for TokenResolver (#537).
mix - v1.5.2
-
REFACTOR : ShapeBorder merge (#490).
-
FEAT : Improve error messages (#491).
-
FEAT : add error state to MixWidgetState (#489).
mix - v1.5.1
- FEAT : Add MixOutlinedBorder (#487).
-
1.5.201 Oct 2024Release notes
Open source →- REFACTOR: ShapeBorder merge (#490).
- FEAT: Improve error messages (#491).
- FEAT: add error state to MixWidgetState (#489).
2024-09-25
Changes
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
Packages with dependency updates only:
Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
remix-v0.0.2-alpha.2
-
1.5.125 Sep 2024Release notes
Open source →- FEAT: Add MixOutlinedBorder (#487).
2024-09-16
Changes
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
-
1.5.017 Sep 2024Release notes
Open source →- FIX: Update OnBrightnessVariant to use
MediaQueryinstead ofTheme(#471). - FIX: Style when merged with an AnimatedStyle should generate an AnimatedStyle (#472).
- FEAT: Create a specific utility to Transform.translate (#484).
- FEAT: Add more directives to Colors (#477).
- FEAT: implement a way to clear inline modifiers (#478).
- FEAT: Fluent API (#475).
Release notes
Open source →- FIX: Update OnBrightnessVariant to use
MediaQueryinstead ofTheme(#471). - FIX: Style when merged with an AnimatedStyle should generate an AnimatedStyle (#472).
- FEAT: Create a specific utility to Transform.translate (#484).
- FEAT: Add more modifiers to Colors (#477).
- FEAT: implement a way to clear inline modifiers (#478).
- FEAT: Fluent API (#475).
Release notes
Open source →-
FIX : Update OnBrightnessVariant to use MediaQuery instead of Theme (#471).
-
FIX : Style when merged with an AnimatedStyle should generate an AnimatedStyle (#472).
-
FEAT : Create a specific utility to Transform.translate (#484).
-
FEAT : Add more modifiers to Colors (#477).
-
FEAT : implement a way to clear inline modifiers (#478).
-
FEAT : Fluent API (#475).
- FIX: Update OnBrightnessVariant to use
-
1.4.623 Aug 2024Release notes
Open source →- FIX(docs): fix fn level docs for Style::applyVariants (#460).
- FIX: Shadow list animation (#445).
- FIX: SpecModifiers were taking a long time to animate. (#457).
- FEAT: Create mouse cursor Decorator (#263).
- FEAT: Add parameter onEnd for AnimatedStyle (#458).
- FEAT:
SingleChildScrollViewwidget modifier (#427). - FEAT: Remix improvements and further improvements (#410).
Release notes
Open source →-
FIX (docs): fix fn level docs for Style::applyVariants (#460).
-
FIX : Shadow list animation (#445).
-
FIX : SpecModifiers were taking a long time to animate. (#457).
-
FEAT : Create mouse cursor Decorator (#263).
-
FEAT : Add parameter onEnd for AnimatedStyle (#458).
-
FEAT : SingleChildScrollView widget modifier (#427).
-
FEAT : Remix improvements and further improvements (#410).
-
1.4.509 Aug 2024Release notes
Open source →- FIX: HitTestBehavior when there is an Interectable in the tree (#437).
- FEAT: Create a specific utility to Transform.rotate (#434).
- FEAT: TargetPlatform and web variants (#431).
2024-08-02
Changes
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
Packages with dependency updates only:
Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
remix-v0.0.2+4
Release notes
Open source →- FIX: HitTestBehavior when there is an Interectable in the tree (#437).
- FEAT: Create a specific utility to Transform.rotate (#434).
- FEAT: TargetPlatform and web variants (#431).
Release notes
Open source →-
FIX : HitTestBehavior when there is an Interectable in the tree (#437).
-
FEAT : Create a specific utility to Transform.rotate (#434).
-
FEAT : TargetPlatform and web variants (#431).
-
1.4.402 Aug 2024Release notes
Open source →- FIX: Pressable disposes controller only if it creates it (#424).
2024-08-01
Changes
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
Packages with dependency updates only:
Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
remix-v0.0.2+3
-
1.4.301 Aug 2024Release notes
Open source →- FIX: Breakpoint utility merge exception (#421).
2024-07-31
Changes
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
Packages with dependency updates only:
Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
remix-v0.0.2+2
-
1.4.231 Jul 2024Release notes
Open source →- FIX: FlexSpecWidget prioritizes the direction in spec (#414).
2024-07-30
Changes
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
-
1.4.130 Jul 2024Release notes
Open source →- FIX: Added missing widget state utilities (#411).
- FIX: Correct handling of individual border sides (#408).
- DOCS: improve mix theme data features explanations (#404).
Release notes
Open source →-
FIX : Added missing widget state utilities (#411).
-
FIX : Correct handling of individual border sides (#408).
-
DOCS : improve mix theme data features explanations (#404).
-
1.4.026 Jul 2024Release notes
Open source →- FEAT: Code generation for Widget Modifiers (#396).
- FEAT: Ability to pass MixWidgetStateController to SpecBuilder (#391).
- FEAT: Interactive widget state by default (#384).
- FEAT: MixThemeData can alter default order of modifiers (#380).
- FEAT: Dto utility generation now adds constructor and static methods (#377).
- FEAT: ColorSwatchToken and other token improvements (#378).
- REFACTOR: Code gen more lint friendly dart code (#399).
- FIX: Gestures propagation for GestureMixStateWidget (#394).
- FIX: Normalization of order of modifier when applied to a Styled Widget (#389).
- FIX: Animations of Stack and Flex (#388).
- FIX: Review the order of modifiers adding FlexibleModifier, PaddingModifier, and RotatedModifier (#379).
Release notes
Open source →-
FEAT : Code generation for Widget Modifiers (#396).
-
FEAT : Ability to pass MixWidgetStateController to SpecBuilder (#391).
-
FEAT : Interactive widget state by default (#384).
-
FEAT : MixThemeData can alter default order of modifiers (#380).
-
FEAT : Dto utility generation now adds constructor and static methods (#377).
-
FEAT : ColorSwatchToken and other token improvements (#378).
-
REFACTOR : Code gen more lint friendly dart code (#399).
-
FIX : Gestures propagation for GestureMixStateWidget (#394).
-
FIX : Normalization of order of modifier when applied to a Styled Widget (#389).
-
FIX : Animations of Stack and Flex (#388).
-
FIX : Review the order of modifiers adding FlexibleModifier, PaddingModifier, and RotatedModifier (#379).
-
1.3.012 Jul 2024Release notes
Open source →- REFACTOR: use timer instead of future<void> (#374).
- REFACTOR: bump flutter version to 3.19.0 (#365).
- FEAT: modifiers in spec (#333).
- FEAT: add attribute to fontVariantion (#371).
Release notes
Open source →- REFACTOR: unpressDelay uses timer instead of future<void> now (#374).
- REFACTOR: bump min flutter version to 3.19.0 (#365).
- FEAT: added modifiers per spec (#333).
- FEAT: add attribute to fontVariantion (#371).
Release notes
Open source →-
REFACTOR : unpressDelay uses timer instead of future
-
REFACTOR : bump min flutter version to 3.19.0 (#365).
-
FEAT : added modifiers per spec (#333).
-
FEAT : add attribute to fontVariantion (#371).
-
1.2.003 Jul 2024Release notes
Open source →- FIX: Exception when there is no children on flex (#345).
- FIX: Added remaining params to callable specs and modifiers (#332).
- FIX: Gap resolve SpaceToken in flex attribute (#327).
- FIX: mix - Improved merge behavior between ShapeDecoration and BoxDecoration (#316).
- FEAT: pressable supports keyboard events (#346).
Release notes
Open source →-
FIX : Exception when there is no children on flex (#345).
-
FIX : Added remaining params to callable specs and modifiers (#332).
-
FIX : Gap resolve SpaceToken in flex attribute (#327).
-
FIX : mix - Improved merge behavior between ShapeDecoration and BoxDecoration (#316).
-
FEAT : pressable supports keyboard events (#346).
-
1.1.327 Jun 2024Release notes
Open source →- Improved merge behavior between ShapeDecoration and BoxDecoration
- Fixed space token resolve on gap in flex attribute
- Added remaining params to callable specs and modifiers
-
1.1.127 Jun 2024Release notes
Open source →- Fixed some specs not respecting nested animated.
- Added call build method to specs.
-
1.1.019 Jun 2024Release notes
Open source →- Mix now uses mix_generator for Spec and Dto generation.
- Added missing utilities for IconSpec and ImageSpec.
- Added missing ShapeBorders.
- Improved ShapeBorderDto merge behavior.
- Bumped minimum Dart SDK to 3.0.6.
- Added animated utility to Spec.
-
1.0.001 Jun 2024Release notes
Open source →- Revamped Mix API for improved functionality and developer experience.
- Enhanced performance and system responsiveness.
- Broadened test coverage for greater reliability.
- Extensive bug fixes for increased stability.
- Too many things to list; view our docs for more info.
Visit our documentation site for more information https://www.fluttermix.com
Release notes
Open source →-
Revamped Mix API for improved functionality and developer experience.
-
Enhanced performance and system responsiveness.
-
Broadened test coverage for greater reliability.
-
Extensive bug fixes for increased stability.
-
Too many things to list; view our docs for more info.
Visit our documentation site for more information https://fluttermix.com
-
1.0.0-beta.1531 May 2024 pre-releaseNothing published for this version
-
1.0.0-beta.1417 May 2024 pre-releaseNothing published for this version
-
1.0.0-beta.1308 May 2024 pre-releaseNothing published for this version
-
1.0.0-beta.1209 Apr 2024 pre-releaseNothing published for this version
-
1.0.0-beta.1128 Mar 2024 pre-releaseNothing published for this version
-
1.0.0-beta.1025 Mar 2024 pre-releaseNothing published for this version
-
1.0.0-beta.925 Mar 2024 pre-releaseNothing published for this version
-
1.0.0-beta.824 Feb 2024 pre-releaseNothing published for this version
-
1.0.0-beta.712 Feb 2024 pre-releaseNothing published for this version
-
1.0.0-beta.606 Feb 2024 pre-releaseNothing published for this version
-
1.0.0-beta.502 Feb 2024 pre-releaseNothing published for this version
-
1.0.0-beta.427 Jan 2024 pre-releaseNothing published for this version
-
1.0.0-beta.325 Jan 2024 pre-releaseNothing published for this version
-
1.0.0-beta.225 Jan 2024 pre-releaseNothing published for this version
-
1.0.0-beta.125 Jan 2024 pre-releaseNothing published for this version
-
0.9.008 May 2024Nothing published for this version
-
0.0.702 Oct 2022Release notes
Open source →-
Performance improvements.
-
Bug fixes #59 by @bdlukaa.
-
InheritedAttribute - Custom Mix attributes #94 by @pbissonho.
-
-
0.0.622 Mar 2022Release notes
Open source →- Refactored MixTheme & Context Tokens.
- ZBox Widget by @.
- Headless Widgets (Experimental).
- Lots of bug fixes and performance improvements.
-
0.0.502 Jan 2022 -
0.0.415 Dec 2021Release notes
Open source →- FEAT: Support header on scaffold (#554).
- FEAT: Accordion interaction based on open variable (#546).
2024-12-06
Changes
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes: