Releases: btwld/mix
mix-v2.0.1
Mix 2.0.1: The Next Chapter in Flutter Styling
Mix 2.0 introduces a fluent, type-safe styling system for Flutter with first-class variants, built-in animation APIs, and token-based theming. This release modernizes the developer experience by separating style semantics from widget structure while keeping composition ergonomic.
tl;dr
- New fluent
StylerAPI (BoxStyler,TextStyler,IconStyler,FlexBoxStyler,ImageStyler) - Inline dynamic variants (
onHovered,onPressed,onDark, breakpoints, platform, and more) - Three animation models: implicit, phase, and keyframe
- Typed design tokens with
MixScope - Expanded widget and modifier ecosystem
What's Changed
Fluent Styler API
Mix 2.0 replaces prefix-heavy utility declarations with chainable, strongly typed stylers that are easier to discover in IDE autocomplete and safer to refactor.
final card = BoxStyler()
.color(Colors.white)
.paddingAll(16)
.borderRounded(12)
.onHovered(.color(Colors.grey.shade50))
.onDark(.color(Colors.grey.shade900));
Box(style: card, child: child);Callable Stylers
Stylers can be invoked directly as widget factories:
final box = BoxStyler().color(Colors.blue).size(100, 100)
box(child: child); // returns a BoxNew Animation APIs
Mix now supports three animation types directly in style definitions, from simple state transitions to full timeline control:
- Implicit animations for simple state transitions
- Phase animations for ordered multi-step sequences
- Keyframe animations for timeline-driven parallel tracks
Implicit (state/variant-driven)
final style = BoxStyler()
.color(Colors.blue)
.size(100, 100)
.animate(.easeInOut(300.ms))
.onHovered(.color(Colors.deepPurple).size(120, 120));Phase (event-triggered multi-step flow)
final controller = PhaseAnimationController();
final base = BoxStyler().color(Colors.blue).size(100, 100);
PhaseAnimationBuilder(
controller: controller,
phases: [
PhaseConfig(base.size(80, 80), duration: 150.ms, curve: .easeIn),
PhaseConfig(base.size(120, 120), duration: 250.ms, curve: .bounceOut),
PhaseConfig(base, duration: 180.ms, curve: .easeOut),
],
builder: (context, phaseStyle) => Box(style: phaseStyle),
);Keyframe (timeline + multiple tracks)
KeyframeAnimationBuilder(
duration: 1200.ms,
repeat: true,
keyframes: {
KeyframeTrack<double>(
property: KeyframeProperty.iconSize,
keyframes: [Keyframe(0.0, 40), Keyframe(0.5, 56), Keyframe(1.0, 40)],
),
KeyframeTrack<Color>(
property: KeyframeProperty.iconColor,
keyframes: [Keyframe(0.0, Colors.red), Keyframe(1.0, Colors.red.shade800)],
),
},
builder: (context, keyframeStyle) => StyledIcon(style: baseIcon.merge(keyframeStyle)),
);See the Animations Guide for full concepts, API details, and additional examples.
Breaking Changes
Mix 2.0 is a major API evolution. Migration from 1.x requires updates.
- Prefix-based APIs like
$box,$text,$on, and$withare replaced by fluent stylers - Widget names and style composition patterns may differ from 1.x conventions
- Existing style declarations must be rewritten to the new chained method format
Migration reference:
Before / After Snapshot
// Before (1.x)
final style = Style(
$box.color.blue(),
$box.padding(16),
$on.hover($box.color.red()),
);// After (2.0)
final style = BoxStyler()
.color(Colors.blue)
.paddingAll(16)
.onHovered(.color(Colors.red));Ecosystem
mix: Core styling frameworkmix_annotations: Annotation package for generationmix_generator:build_runnergenerator for specs/stylersmix_lint: Custom lint rules for Mix best practices
More ecosystem packages and updates are coming soon.
Full Docs
See fluttermix.com for complete guides, widget references, and migration resources.
What's Changed
- docs: Add version selector and update navbar by @tilucasoli in #721
- docs: Update animations guide introduction by @tilucasoli in #722
- feat: Next release by @leoafarias in #714
- chore: fix publish issues by @tilucasoli in #750
- fix: lint issues and code formatting by @leoafarias in #752
- style: apply code formatting across all packages by @leoafarias in #753
- style: apply dart fix to example package by @leoafarias in #755
- feat: Implement Widget Builder Pattern for Ergonomic Mix API by @leoafarias in #754
- fix: Add default styles to Mix widgets by @leoafarias in #759
- refactor: normalize mixin type parameter order for consistency by @leoafarias in #757
- fix: modernize DCM pipeline with dcm-action@v2 and update deprecated GitHub Actions by @leoafarias in #756
- fix: breakpoint fix by @tilucasoli in #758
- refactor: remove redundant static builder methods from widgets by @leoafarias in #763
- refactor: migrate StyleWidget to use styleSpec parameter for improved consistency by @leoafarias in #762
- fix: widget state tracking logic in StyleBuilder by @tilucasoli in #765
- refactor: remove unsupported widget state variants by @leoafarias in #768
- feat: Add DefaultStyledText and DefaultStyledIcon typedefs by @tilucasoli in #767
- refactor: extract widget state variant mixins into separate files by @leoafarias in #769
- fix: VariantStyle merge by @tilucasoli in #774
- refactor: API modification and update to Dart 3.10 by @tilucasoli in #776
- docs: dot shorthand documentation by @tilucasoli in #777
- chore: Remove Mix API reference markdown files by @tilucasoli in #778
- docs: Improve widget docs and automate documentation generation by @tilucasoli in #780
- refactor:
StackandStackBoxby @tilucasoli in #779 - docs: Add Mix tutorials and update documentation structure by @tilucasoli in #781
- chore: Refactor CI, remove custom action, and rename example by @tilucasoli in #782
- chore: move the examples to the root by @tilucasoli in #783
- refactor: introduce Style.of() and Style.maybeOf() static methods by @leoafarias in #784
- feat: add number directives and extension for numeric transformations by @leoafarias in #785
- refactor: widget modifier API and update to Dart 3.10 by @tilucasoli in #775
- fix: Ensure that Visibility Widget are visible until the end of animation by @dickermoshe in #771
- fix: React Server Components RCE vulnerability by @vercel[bot] in #798
- docs: refresh Mix 2.0 styler API and migration guide by @leoafarias in #793
- Fix React Server Components RCE vulnerability by @vercel[bot] in #797
- feat(mix): add applyVariants() method for NamedVariants by @leoafarias in #801
- refactor: remove dead color mix and tighten tests by @leoafarias in #804
- feat: deprecate $ utility accessors in favor of Styler classes by @leoafarias in #806
- Add Flutter/FVM/DCM/Melos setup script by @leoafarias in #812
- Fix SessionStart hook by adding required matcher field by @leoafarias in #813
- Fix SessionStart hook path expansion and add defensive checks by @leoafarias in #814
- Remove SessionStart hook and flutter env helper by @leoafarias in #815
- test: strengthen scope dependency notifications by @leoafarias in #810
- fix: add AnimationStyleMixin to FlexBoxStyler and StackBoxStyler by @leoafarias in #819
- fix: add missing chain getter to StackStyler by @leoafarias in #818
- Run setup script by @leoafarias in #820
- fix: standardize specs with @immutable and fix equality bugs by @leoafarias in #821
- fix: use symlinks for non-interactive shell support by @leoafarias in #822
- docs: fix incorrect SDK version and deprecated API terminology by @leoafarias in #823
- refactor: mark resolveProp as @internal and migrate to MixOps.resolve by @leoafarias in #833
- refactor: adopt Dart 3.10 dot notation syntax in examples by @leoafarias in #836
- feat(mix_generator): Add MixableSpec, MixableStyle...
Mix 1.7.0
Highlights
Repository Update: Mix Ecosystem Reorganization
We’ve made an architectural decision to reorganize the Mix ecosystem for better clarity, scalability, and maintenance.
Remix and Naked have been moved to separate repositories, allowing them to evolve independently as standalone design system layers.
The Mix repository will continue to host:
- mix (core)
- mix_lint
- mix_generator
- mix_annotations
This structure keeps the core styling engine unified, while encouraging modular growth across the ecosystem.
Introducing ComputedStyle: Smarter, Faster Widget Rebuilds in Mix
This update brings a breakthrough performance improvement to the Mix framework:
ComputedStyle and ComputedStyleProvider – a new system that rebuilds only what’s needed, using InheritedModel under the hood.
🚀 What it solves:
Traditional rebuilds could affect entire widget subtrees. With ComputedStyle, we now get:
• Up to 70% fewer unnecessary rebuilds
• O(1) style resolution
This change makes Mix significantly more scalable for large apps.
Cleaner Style API: No More .chain
We’ve simplified the way you write styles in Mix.
You no longer need .chain to compose multiple style elements. 🎉
👇 Before:
Style(
$box.chain
..padding.all(12)
..color.red()
..border.all.color.redAccent(),
)✅ Now:
Style(
$box
..padding.all(12)
..color.red()
..border.all.color.redAccent(),
)This is part of our ongoing effort to make Mix more intuitive, predictable, and joyful to use.
What's Changed
- fix: Documentation of animation by @tilucasoli in #580
- refactor: Use WidgetState instead of MixWidgetState by @tilucasoli in #582
- feat: "Naked" - A Behavior-First UI Component Library for Flutter by @leoafarias in #579
- refactor: Deprecate
MixWidgetStateControllerby @tilucasoli in #586 - feat: Create MixBuilder by @tilucasoli in #581
- chore: replace conceptadev urls for bitwild by @tilucasoli in #585
- refactor: Update outdated API by @tilucasoli in #583
- feat: Recreate Button using Naked by @tilucasoli in #587
- feat: Remove unused modifier by @tilucasoli in #598
- chore: Reorganize remix folders by @tilucasoli in #588
- docs: Document naked button by @tilucasoli in #599
- refactor: Refactor Checkbox by @tilucasoli in #590
- refactor: accordion by @tilucasoli in #591
- refactor: naked menu by @tilucasoli in #592
- refactor: radio group by @tilucasoli in #593
- refactor: Naked Slider by @tilucasoli in #594
- refactor: Tabs and Tooltip by @tilucasoli in #595
- feat: Add test for Hover to RadioButton by @tilucasoli in #601
- refactor: Select by @tilucasoli in #596
- feat: Implement Tooltip Lifecycle by @tilucasoli in #603
- docs: Add introduction documentation by @tilucasoli in #604
- docs: Remove old example app by @tilucasoli in #607
- feat: Add overlayLifecycle to select by @tilucasoli in #605
- feat: Add textstyle prop in NakedTextField by @tilucasoli in #608
- fix: Change default
autofocusto false in Menu and Select by @tilucasoli in #609 - chore: Remove unused files by @tilucasoli in #610
- feat: deprecate styled widgets in favor of new naming conventions by @leoafarias in #619
- chore: spec widget consolidation by @leoafarias in #621
- chore: update action.yml by @tilucasoli in #627
- feat: builder optimization by @leoafarias in #629
- fix: remix code generation for animated by @leoafarias in #637
- feat: enhance husky and lint_staged with melos integration by @leoafarias in #640
- feat: unify SpecUtility, Style, and Attributes as compatible values by @leoafarias in #643
- refactor: Remove NestedStyleAttribute and migrate to direct Style usage by @leoafarias in #644
- fix: copyWith overriding bug by @tilucasoli in #622
- refactor: Fix deprecations and modernize codebase by @leoafarias in #647
- fix: Change Mixable to extend EqualityMixin instead of StyleElement by @tilucasoli in #648
- refactor: Rename WidgetModifiersData to WidgetModifiersConfig by @tilucasoli in #649
- refactor: Move widget state handling from MixBuilder to SpecBuilder by @tilucasoli in #651
- chore: remove todo_list example directory by @tilucasoli in #646
- refactor: Remove custom spacing logic by @tilucasoli in #632
- refactor: Fix documentation and renames by @tilucasoli in #615
- refactor: rename MixData to MixContext in code generation by @tilucasoli in #654
- feat: Implementing duration extension for int by @tilucasoli in #634
- feat: Add generated style-focused modifiers and specs by @tilucasoli in #652
- feat: Create
DefaultTextStyleModifier by @tilucasoli in #578 - chore: version packages by @github-actions in #655
- refactor: Remove SpecConfiguration and SpecStyle from environment by @tilucasoli in #656
- chore: Update generated files by @tilucasoli in #658
- fix: Add variant condition check to ContextVariantBuilder by @tilucasoli in #657
- refactor: Implement BaseStyle utility class and improve styling architecture by @tilucasoli in #659
- feat: Implementing new RXButton by @tilucasoli in #660
- refactor: Simplify accordion component architecture by @tilucasoli in #661
- feat: Implement RxCard by @tilucasoli in #664
- feat: Implement RxChip component by @tilucasoli in #665
- feat: Implementing RxLabel by @tilucasoli in #666
- feat: Implement RxMenuItem component by @tilucasoli in #667
- feat: Implement RxAvatar component by @tilucasoli in #668
- docs: Add comprehensive documentation and examples for Remix components by @tilucasoli in #669
- refactor: callout, progress and spinner components by @tilucasoli in #671
- feat: Refactor radio and checkbox components with new architecture by @tilucasoli in #672
- feat: Refactor RxSelect component with new architecture by @tilucasoli in #673
- feat: Refactor slider and spinner components with new architecture by @tilucasoli in #674
- feat: Refactor TextField component with new architecture by @tilucasoli in #675
- feat: Add authentication screen demo with social login options by @tilucasoli in #676
- docs: Improve documentation for all form components by @tilucasoli in #678
- feat: Add icon position support by @tilucasoli in #679
- feat: Add API compatibility checking with dart_apitool by @leoafarias in #670
- feat: Add focused style classes for spec utilities by @tilucasoli in #677
- chore: Update pipelines by @tilucasoli in #682
- feat: recreate components on folder layout by @tilucasoli in #680
- chore: Update Changelog pipeline by @tilucasoli in #684
- chore: version packages by @github-actions in #685
- test: Create a test suite for RxButton and RxLabel by @tilucasoli in #686
- refactor: Improve RxAvatar component with background/foreground image support and enhanced API by @tilucasoli in #687
- refactor: Rename MenuItem to ListItem component by @tilucasoli in #688
- test: Add card test implementation by @tilucasoli in #689
- test: Add comprehensive test suite for TextField by @tilucasoli in #690
- test: Add tests for RxRadioGroup by @tilucasoli in #691
- refactor: RxSelect to support custom item and trigger widgets by @tilucasoli in #692
- feat: ...
Mix 1.6.0 "Nielsen"
Packages Updates
mix - v1.6.0
- REFACTOR: Rename
MixablePropertytoMixableType(#574) - REFACTOR: mix generator clean up and mix semantic changes (#569)
- CHORE: Update min version compatibility (#572)
mix_annotations - v0.4.0
- REFACTOR: Rename
MixablePropertytoMixableType(#574). - REFACTOR: mix generator clean up and mix semantic changes (#569).
mix_generator - v0.4.0
- REFACTOR: Rename
MixablePropertytoMixableType(#574) - REFACTOR: mix generator clean up and mix semantic changes (#569)
- CHORE: Update min version compatibility (#572)
What's Changed
- feat: Accordion interaction based on open variable by @tilucasoli in #546
- feat: improve Fortaleza Theme Customization by @tilucasoli in #547
- feat: Support header on scaffold by @tilucasoli in #554
- chore: version packages by @github-actions in #556
- fix: Add ToastLayer on RemixAPp by @tilucasoli in #557
- docs: formatting for widget modifiers guide by @kbtz in #567
- refactor: mix generator clean up and mix semantic changes by @leoafarias in #569
- chore: Update min version compatibility by @tilucasoli in #572
- refactor: Rename
MixablePropertytoMixableTypeby @tilucasoli in #574 - chore: version packages by @github-actions in #575
- chore: version packages by @github-actions in #576
New Contributors
Full Changelog: mix-1.5.3...mix-1.6.0
Mix 1.5.3 "Nielsen"
Highlights
FlexBox Gets a Dedicated Spec and Utility
In this release, FlexBox now has its own dedicated utility: $flexbox. Previously, you styled FlexBox using either $flex or $box. With $flexbox, you get a utility that combines attributes from both, offering a more intuitive and efficient way to handle a common use case in most applications.
This enhancement simplifies your code by reducing the need to use both box and any flex widget, making it easier to define layouts with different children.
FlexBox(
direction: Axis.vertical,
style: Style(
$flexbox.chain
..flex.mainAxisAlignment.center()
..flex.crossAxisAlignment.center()
..flex.gap(12)
..padding.all(12)
..color.red()
..border.all.color.redAccent(),
),
children: const [
Text('Hello'),
Text('World'),
],
),Important Note: Starting with the next major version, FlexBox will exclusively use $flexbox. This change ensures that FlexBox styling is fully aligned with the existing API conventions in Mix, offering a more consistent developer experience.
Introducing the Remix Playground
Remix now includes a fully interactive playground, allowing you to explore and preview all available components in one place.
Try out the playground today to get hands-on with Remix components and unlock new possibilities for your UI design!
Introducing Design Token Support in mix_generator
The mix_generator and mix_annotation now include full support for design token generation. With this update, you can effortlessly define your design tokens and let the generator handle creating everything needed to integrate them into your MixThemeData.
Simply annotate a class with @MixableToken, specifying the token type, and the generator will do the rest. This feature supports all design token categories: Radius, Color, Space, and TextStyle.
@MixableToken(Color)
class CustomColors {
final Color primary;
final Color surface;
const CustomColors({
required this.primary,
required this.surface,
});
Map<ColorToken, Color> toMap() => _$CustomColorsToMap(this);
}Directly in Styles:
The generated code supports you reference tokens directly in your styles for a cleaner, more declarative approach:
$box.color.$primary()Access from Context:
You can also access tokens dynamically through the context
context.$color.primary()This update ensure consistency across your app while reducing boilerplate. The added utilities make tokens easier to use, improving developer productivity.
Packages Updates
mix - v1.5.3
- 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).
remix - v0.0.3
- REFACTOR: Create a new Architecture for remix's components (#446).
- REFACTOR(remix): improve widgetbook navigation (#524).
- REFACTOR: Add in code documentation and rename params for each component (#514).
- REFACTOR: Remix progress (#429).
- REFACTOR: small fixes on remix (#512).
- REFACTOR: Rewrite Fortaleza theme using the new code gen for tokens (#528).
- REFACTOR: Remix was rewritten using Fluent API (#476).
- REFACTOR: Rewrite all components in the new Archtecture (#467).
- FIX: Textfield helper Text (#531).
- FIX: Toast animation trigger (#530).
- FEAT: Create Textfield (#511).
- FEAT: Chip component (#504).
- FEAT: implement toast component (#503).
- FEAT: Card has child instead of children parameter (#499).
- FEAT: Create dark base theme for Remix (#498).
- FEAT: remix-styling-configuration (#483).
- FEAT: Segmented control (#479).
- FEAT: Accordion component (#433).
- FEAT: Slider component (#509).
- FEAT: Add more directives to Colors (#477).
- FEAT: Menu Item Component (#508).
- FEAT: Add group feature to Radio (#435).
- FEAT: Create Select component (#448).
- FEAT: Add parameter onEnd for AnimatedStyle (#458).
- FEAT: button supports component builder (#444).
- FEAT: Create a theme for Remix (#470).
- FEAT: Refactor Remix components (#428).
- FEAT: Remix improvements and further improvements (#410).
- FEAT: Rewrite FlexBox as a Mix's primitive component (#517).
mix_annotations - v0.3.1
- FEAT: Create code gen for design tokens (#521).
mix_generator - v0.3.2
- REFACTOR: Rewrite Fortaleza theme using the new code gen for tokens (#528).
- FIX: Shadow list animation (#445).
- FEAT: Create code gen for design tokens (#521).
- FEAT: Rewrite FlexBox as a Mix's primitive component (#517).
- FEAT: Fluent API (#475).
- FEAT: Remix improvements and further improvements (#410).
- DOCS: improve mix theme data features explanations (#404).
mix_lint - v0.1.2
- FEAT: Rewrite FlexBox as a Mix's primitive component (#517).
What's Changed
- feat: Utilities for text height behavior by @tilucasoli in #495
- feat: Create StrokeAlignUtility by @tilucasoli in #496
- feat: Create dark base theme for Remix by @tilucasoli in #498
- feat: Card has child instead of children parameter by @tilucasoli in #499
- feat: implement toast component by @tilucasoli in #503
- feat: Chip component by @tilucasoli in #504
- feat: Improve spring curve by @tilucasoli in #507
- feat: Add Dark Theme by @tilucasoli in #510
- feat: Menu Item Component by @tilucasoli in #508
- feat: Slider component by @tilucasoli in #509
- feat: Create Textfield by @tilucasoli in #511
- refactor: small fixes on remix by @tilucasoli in #512
- chore: improve the package scores by @hesham04Dev in #513
- feat: Bring TextStyle properties to the root of TextSpecUtility by @tilucasoli in #516
- feat: Rewrite FlexBox as a Mix's primitive component by @tilucasoli in #517
- refactor: Solve dcm lint issues by @tilucasoli in #519
- refactor: Modernize MediaQuery usage by @cabaucom376 in #520
- refactor: Add in code documentation and rename params for each component by @tilucasoli in #514
- docs: Update creating-a-widget.md by @cabaucom376 in #518
- fix: Token was not being resolved correctly by @tilucasoli in #525
- feat: Create code gen for design tokens by @tilucasoli in #521
- refactor(remix): improve widgetbook navigation by @yousinix in #524
- fix: Order of modifiers implementation on Box, Image and Text by @tilucasoli in #529
- fix: Toast animation trigger by @tilucasoli in #530
- fix: Textfield helper Text by @tilucasoli in #531
- docs: Add section for
TokenResolverby @tilucasoli in #537 - refactor: Rewrite Fortaleza theme using the new code gen for tokens by @tilucasoli in #528
- chore: version packages by @github-actions in #543
New Contributors
- @hesham04Dev made their first contribution in #513
- @cabaucom376 made their first contribution in #520
- @yousinix made their first contribution in #524
Full Changelog: mix-1.5.2...mix-1.5.3
Mix 1.5.2 "Nielsen"
Packages Updates
mix - v1.5.2
- REFACTOR: ShapeBorder merge (#490).
- FEAT: Improve error messages (#491).
- FEAT: add error state to MixWidgetState (#489).
What's Changed
- feat: Add state error on MixWidgetState by @tilucasoli in #489
- refactor: ShapeBorder merge by @tilucasoli in #490
- feat: Improve error messages by @tilucasoli in #491
- chore: version packages by @github-actions in #493
Full Changelog: mix-1.5.1...mix-1.5.2
Mix 1.5.1 "Nielsen"
Packages Updates
mix - v1.5.1
- FEAT: Add MixOutlinedBorder (#487).
What's Changed
- feat: Add MixOutlinedBorder by @tilucasoli in #487
- chore: version packages by @github-actions in #488
Full Changelog: mix-1.5.0...mix-1.5.1
Mix 1.5.0 "Nielsen"
Jakob Nielsen, a leading figure in UI/UX design, transformed the field with his Ten Usability Heuristics and emphasis on user-centered design. His work highlights the importance of intuitive, efficient interfaces and usability testing. Nielsen’s mantra, “users are not like you,” serves as a reminder to prioritize real user needs, making his contributions essential in shaping modern digital experiences.
Release Notes
Highlights
New Feature: Fluent API
The fluent API allows for more expressive and readable code when working with Mix specifications and utilities. It enables chaining of method calls and provides a more intuitive way to configure and build Mix components.
Key Points:
- Simplified and more concise code when defining Mix specifications.
- Improved readability and maintainability of the codebase.
- Enhanced developer experience and productivity.
final style = Style(
$text.chain
..uppercase()
..textAlign.center()
..style.color.blue()
..style.fontSize(20),
);New Feature: Remove All Previous Spec Modifiers and Color Directives
This feature gives developers greater control over their Styles by allowing them to clear any spec modifier or color directive and start fresh with new ones.
Key Points:
- Added a method to remove all previously applied Spec Modifiers and Color Directives
final style = Style(
$box.chain
..width(100)
..height(100)
..color.red()
..color.withHue(200)
..color.withSaturation(0.3)
..color.withLightness(0.3)
..color.resetDirectives()
..color.withAlpha(140)
);In this example, all previous directives are ignored after the resetDirectives attribute.
Refactor: Generic Brightness Detection
Previously, $on.dark relied on Material design because it was using Theme.of(context), causing issues when using the Cupertino theme. With this update, brightness detection works consistently across different design systems, ensuring better compatibility and reliability.
Key Points:
- Replaced Theme.of(context) with MediaQuery for brightness detection.
- Ensures compatibility with both Material and Cupertino design systems.
What's Changed
- refactor: Rewrite all components in the new Archtecture by @tilucasoli in #467
- feat: Fold MixThemeData into single root by @Solido in #466
- chore: linting by @leoafarias in #474
- feat: create a theme for Remix by @leoafarias in #470
- fix: Style when merged with an AnimatedStyle should generate a AnimatedStyle by @tilucasoli in #472
- feat: Fluent API by @leoafarias in #475
- feat: implement a way to clear inline modifiers by @tilucasoli in #478
- feat: Add more directives to Colors by @tilucasoli in #477
- refactor: Remix was rewritten using Fluent API by @tilucasoli in #476
- feat: Accordion component by @tilucasoli in #433
- feat: Segmented control by @tilucasoli in #479
- chore: consolidate spec attribute and dto by @leoafarias in #480
- fix: Update OnBrightnessVariant to use
MediaQueryinstead ofThemeby @doug-orchard in #471 - fix: reset modifiers and directives when using fluentAPI by @tilucasoli in #482
- feat: transform.translate by @tilucasoli in #484
- feat: remix-styling-configuration by @leoafarias in #483
- chore: version packages by @github-actions in #485
- chore: version packages by @github-actions in #486
New Contributors
- @doug-orchard made their first contribution in #471
Full Changelog: mix-1.4.6...mix-1.5.0
Mix 1.4.6 "Norman"
Packages Updates
mix - v1.4.6
- 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).
mix_annotations - v0.3.0
- FIX: SpecModifiers were taking a long time to animate. (#457).
mix_generator - v0.3.0
What's Changed
- fix: Shadow list animation by @tilucasoli in #445
- chore: Remove example by @tilucasoli in #449
- chore: Update google fonts by @tilucasoli in #450
- refactor: Create a new Architecture for remix's components by @tilucasoli in #446
- ci: Fix lint by @tilucasoli in #451
- feat:
SingleChildScrollViewwidget modifier by @Maksimka101 in #427 - fix: Transform.rotate couldn't be applied as specModifiers by @tilucasoli in #455
- fix: SpecModifiers were taking a long time to animate. by @tilucasoli in #457
- feat: Add parameter onEnd for AnimatedStyle by @tilucasoli in #458
- docs: Fix an outdated comment by @m-sadegh-sh in #456
- docs: Adding
$sign in dart code example by @withden in #459 - fix(docs): Fix fn level docs for Style::applyVariants by @canewsin in #460
- feat: Create Select component by @tilucasoli in #448
- feat: Create mouse cursor Decorator by @tilucasoli in #263
- feat: Add group feature to Radio by @tilucasoli in #435
- chore: version packages by @github-actions in #464
New Contributors
- @m-sadegh-sh made their first contribution in #456
- @withden made their first contribution in #459
- @canewsin made their first contribution in #460
Full Changelog: mix-1.4.5...mix-1.4.6
Mix 1.4.5 "Norman"
Packages Updates
mix - v1.4.5
- 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).
What's Changed
- feat: Refactor Remix components by @tilucasoli in #428
- docs: review the theming documentation by @tilucasoli in #430
- docs: remove the custom component doc by @tilucasoli in #432
- feat: TargetPlatform and web variants by @leoafarias in #431
- refactor: Remix progress by @tilucasoli in #429
- fix: HitTestBehavior when there is a Interectable in the tree by @tilucasoli in #437
- feat: Create a specific utility to Transform.rotate by @tilucasoli in #434
- chore: version packages by @github-actions in #438
- feat: button supports component builder by @tilucasoli in #444
- chore: Support to Flutter 3.24.0 by @tilucasoli in #440
Full Changelog: mix-1.4.4...mix-1.4.5
Mix 1.4.4 "Norman"
Packages Updates
mix - v1.4.4
- FIX: Pressable disposes controller only if it creates it (#424).
What's Changed
- fix: Pressable disposes controller only if it creates it by @tilucasoli in #424
- chore: version packages by @github-actions in #426
Full Changelog: mix-1.4.3...mix-1.4.4

