material_design 0.7.0
material_design: ^0.7.0 copied to clipboard
The fastest path to consistent Material Design UIs in Flutter. Build beautiful apps aligned with official metrics and guidelines using a powerful set of ready-to-use design tokens and helper widgets.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.7.0 #
BREAKING CHANGES #
- Tokens: The Material 3 token system has been completely refactored for better organization and clarity.
- System tokens are now organized under
lib/src/m3/tokens/sys/
. This includesColor
,Elevation
,Motion
,Shape
,Spacing
, andTypography
. - Many token files have been moved, renamed, or consolidated. Please refer to the updated documentation for the new token structure.
- The
M3Theme
class has been removed as part of this refactoring.
- System tokens are now organized under
Features #
- Components: Added a new Material 3 Button component (
M3CompButton
). - Tokens: Introduced new system tokens for
Elevation
,Motion
,Shape
,Spacing
, andStateLayerOpacity
.
Refactor #
- Refactored the entire token system to align more closely with the official Material Design 3 specifications.
- Renamed and moved several internal utilities and classes to a new
mt
(Material Toolkit) namespace for better internal structure. - Updated the example application to reflect all the latest changes and new APIs.
- Renamed the "Density" showcase page to "Visual Density" for clarity.
Chores #
- Updated
.gitignore
to exclude new generated files. - Updated
README.md
with the latest information.
0.6.2 #
Major Refactoring: Token System Overhaul #
- Shape System: Replaced
BoxDecoration
withShapeDecoration
across the example app for better semantics. IntroducedM3BorderRadius
and convertedM3Radius
fromdouble
toRadius
constants, providing a more robust and type-safe way to define shapes. - Motion Tokens: Consolidated motion-related tokens.
M3MotionDuration
andM3MotionEasing
have been merged into a single, more organizedm3_motion.dart
file under thesys
directory, improving clarity and discoverability. - File Structure: Reorganized the token file structure to better align with the Material Design 3 system. Legacy and unused token files like
M3ColorRoles
,m3_radius.dart
(the olddouble
based one), andm3_examples.dart
have been removed to streamline the package.
Breaking Changes #
- Removed
M3ColorRoles
: The staticM3ColorRoles
class has been removed. Please use the color scheme provided by theM3Theme
orTheme.of(context).colorScheme
for semantic color access. - Removed
M3Radius
(asdouble
): TheM3Radius
class that provideddouble
values has been replaced byM3BorderRadius
(which providesBorderRadius
objects) and a newM3Radius
class that providesRadius
objects. - Consolidated Motion Tokens:
M3MotionDuration
andM3MotionEasing
are no longer separate files. Importpackage:material_design/material_design.dart
and use theM3MotionDuration
andM3MotionEasing
classes directly.
Enhancements & Fixes #
- Code Cleanup: Performed a general code cleanup, removing obsolete files and refactoring the example app for better readability and consistency.
- Shape Implementation: Consistently replaced
BorderRadius.circular()
with the newM3BorderRadius
constants throughout the example app. - New
md
Module: Introduced a newmd
module for future development, starting with a new barrel filemd.dart
.
0.6.1 #
Refinements and Internationalization #
- Refactored README: Simplified the documentation to focus on core features and improve clarity.
- Internationalized Example App: All user-facing strings in the accessibility showcase are now in English, making the example more accessible to a global audience.
- Code Cleanup: Minor code cleanup and refactoring in the example app for better readability and maintenance.
0.6.0 #
New Features #
- Complete M3 Theme System: Introduced
M3Theme
, an integrated theme builder that generates a completeThemeData
from a seed color, with full support for light, dark, and high-contrast modes. - Comprehensive Accessibility Utilities: Added the
M3Accessibility
class, providing a suite of tools for building WCAG-compliant UIs, including accessible form fields, focus indicators, contrast checking, and touch target enforcement. - Adaptive Design System: Implemented the
M3Adaptive
class with helpers for responsive layouts (M3Adaptive.responsiveLayout
), adaptive navigation (M3AdaptiveScaffold
), and adaptive components that adjust to different screen sizes and platforms. - Advanced Token Utilities: Added new utility classes for enhanced token functionality:
M3TypeScale
: Responsive and accessible typography helpers.M3ColorUtils
: Color manipulation and contrast validation.M3ShapeUtils
: Responsive and brand-specific shape generation.M3MotionUtils
: Contextual animation patterns (fade, slide, scale).
Breaking Changes #
- Token Architecture Refactor: The entire token system has been restructured to follow the official Material Design 3 hierarchy:
- Reference Tokens (Ref): Foundational values (e.g.,
M3RefPalette
,M3RefDuration
). - System Tokens (Sys): Semantic roles (e.g.,
M3SysColor
). - Component Tokens (Comp): Component-specific values (e.g.,
M3CompButton
).
- Reference Tokens (Ref): Foundational values (e.g.,
- The old token structure is now considered legacy and will be deprecated in a future version.
Enhancements & Fixes #
- Example App Overhaul: The example app has been completely reorganized into
Foundations
,Styles
, andComponents
sections to provide a comprehensive showcase of all new features and the new token architecture. - Documentation: Massively updated
README.md
and addedENHANCED_FEATURES.md
to document the new capabilities. - Code Quality: Refactored numerous widgets and classes for better organization, consistency, and adherence to M3 specifications.
0.5.1 #
- BREAKING: Renamed
M3Margins
toM3Margin
andM3Spacers
toM3Spacer
for better naming consistency. - DOCS: Updated
README.md
to reflect the new class names and provide clearer examples. - CHORE: Updated the example app to use the new
M3Margin
andM3Spacer
classes.
0.5.0 #
- BREAKING: Token classes are now
abstract class
instead ofabstract final class
to allow for extension. - BREAKING: Change dart version from
3.8.1
to>=2.17.0 <4.0.0
to allow for extension. - BREAKING: The
equatable
dependency has been removed. - FEAT: Added
M3Margins
andM3Spacers
classes for more semantic layout spacing. - FEAT: Added new radius and shape tokens (
largeIncreased
,extraLargeIncreased
,extraExtraLarge
). - FEAT: The example app has been revamped to better demonstrate the updated tokens, including a new
LaunchURLText
widget. - CHORE: Lowered the minimum Dart SDK requirement from
3.8.1
to2.17.0
for wider project compatibility. - CHORE: As restrições do SDK do Flutter e do Dart foram atualizadas.
- CHORE:
very_good_analysis
has been commented out inanalysis_options.yaml
. - DOCS:
README.md
has been updated with the latest changes.
0.4.1 #
- BREAKING: Renamed
M3Opacity
toM3StateLayerOpacity
to better reflect its purpose. - feat: Added
LaunchURLText
widget to the example app for styled URL links. - feat: Added
M3StateLayerOpacityButtonExample
to demonstrate state layer opacity on a custom button. - refactor: Updated the example app to consistently use
Theme.of(context).textTheme
for typography. - docs: Updated
README.md
with the latest changes and examples.
0.4.0 #
- BREAKING:
M3Motion
has been refactored intoM3MotionDuration
andM3MotionEasing
to better align with the Material Design 3 specifications. - BREAKING:
M3Density
has been removed and replaced withM3VisualDensity
, which uses Flutter's nativeVisualDensity
class. - FEAT: Added new icon sizes:
dense
,medium
,large
, andextraLarge
toM3IconSize
. - FEAT: The
M3Shadow
implementation has been revised, including a newfromElevation
method. - FEAT: Added the
url_launcher
dependency for opening URLs. - FIX: The Z-Index section on the example page has been reworked for a better visual demonstration.
- CHORE: Various formatting and code cleanup improvements in the example app.
0.3.0 #
- Breaking Change: Renamed all tokens from
Material*
toM3*
(e.g.,MaterialTonalColor
toM3TonalColor
) to align with Material Design 3 naming conventions and avoid conflicts with Flutter'sMaterial
class. - Breaking Change: Reorganized the file structure by moving all token files to
lib/src/m3/tokens/
and renaming them with them3_
prefix (e.g.,motion.dart
tom3_motion.dart
). This improves clarity and consistency. - Feat: Implemented a responsive layout in the example app using
NavigationRail
andNavigationDrawer
to showcase theM3Breakpoint
token. - Fix: Updated the copyright year in the
LICENSE
file. - Chore: Updated
pubspec.yaml
by removing thehomepage
field and addingissue_tracker
.
0.2.6 #
- Feat: Added
MaterialDensity
token to control UI density. - Refactor: Replaced
MaterialColorScheme.create
withColorScheme.fromSeed
to align with Flutter's core API. - Refactor: Refined motion tokens by separating them into
MotionEasing
andMotionDuration
for more granular control. - Example: Added a new
DensityPage
to the example app to showcase theMaterialDensity
token. - Example: Updated the example app to use the new motion tokens and
ColorScheme.fromSeed
.
0.2.5 #
- Refactor: The
MaterialMotionToken
has been renamed toMotionScheme
to better align with the Material Design 3 specifications. - Feature: Introduced
MotionDurations
andMotionEasings
classes to provide more granular control over animation durations and easing curves. - Example: Simplified the elevation page logic and updated the motion page to use the new
MotionScheme
.
0.2.4 #
- Refactor: Renamed
MaterialSurface
toMaterialTonalColor
and its methodgetTintedColor
tofromElevation
for better alignment with Material Design 3 terminology, where tonal colors are applied based on surface elevation. - Refactor: Renamed
MaterialColorSchemes
toMaterialColorScheme
to maintain consistency with Flutter'sColorScheme
. - Feat: Added detailed comments to
MaterialBreakpoint
explaining the different breakpoint values based on the Material Design 3 guidelines. - Feat: Added
allLevels
toMaterialElevation
, providing a convenient list of all elevation levels. - Fix: Ignored
.vscode/
and.env
files in.gitignore
to avoid committing editor-specific settings and environment variables. - Example: Updated the example app to use
MaterialTonalColor.fromElevation
and other related changes.
0.2.3 #
- Docs: Added detailed examples to
README.md
forMaterialBorder
,MaterialOpacity
,MaterialBreakpoint
,MaterialIconSize
, andMaterialZIndex
. - Example: Added a new
MotionPage
to the example app to showcase allMaterialMotion
tokens. - Example: Updated the
OtherTokensPage
in the example app to include showcases forMaterialBreakpoint
,MaterialIconSize
, andMaterialZIndex
. - Refactor: Renamed
MotionToken
toMaterialMotionToken
for better clarity and consistency. - Fix: Removed
MaterialBorder.none
as it was redundant (equivalent to0
).
0.2.1 #
Changed #
- Renamed
MaterialColorSchemes
toMaterialColorScheme
. - Removed static schemes
lightScheme
anddarkScheme
; use thecreate()
method instead.
0.2.0 #
Added #
MaterialSurface
Utility: Introduced a new utility class with agetTintedColor()
method to easily apply Material 3 surface tint based on elevation. This encapsulates theElevationOverlay
logic into a clean, reusable token.
0.1.0 #
Added #
- Complete Material 3 Token System:
MaterialColorSchemes
: Light and dark color schemes generated from a seed color.MaterialTypeScale
: Full set of 15 M3 text styles (Display, Headline, Title, Body, Label).MaterialShape
:ShapeBorder
tokens for all M3 corner radius levels.MaterialShadow
:BoxShadow
tokens aligned with the 6 elevation levels of M3.MaterialBorder
: Tokens for border widths.
- Style Guide Example: The example app was completely rewritten to serve as a visual style guide for all tokens.
- Barrel Files: Added barrel files for easy token import by category (
color
,typography
,geometry
, etc.).
Changed #
- Refactored
MaterialOpacity
: Aligned with M3 state layer values (Hover, Focus, Press, Drag) and disabled opacities. - Refactored
MaterialRadius
: Values adjusted to match the M3 corner radius token scale. - Refactored
MaterialIconSize
: Simplified to focus on the default 24dp size, with guidance for contextual usage. - Refactored
motion.dart
: FixedasTween
return type toAnimatable<T>
to ensure proper typing.