Introduce tone-based surfaces and accent color add-ons - Part 1 (#142654)

This PR is to add 19 new `ColorScheme` roles following the Material Design 3 specs. This PR doesn't apply the new colors to `ThemeData`  or any widgets.

This PR is created to split the big change in #138521, once this is merged, another PR that contains the rest of the changes(apply new color roles to widgets and deprecate 3 more colors) will follow.

**Tone-based surface colors** (7 colors): 
* surfaceBright
* surfaceDim
* surfaceContainer
* surfaceContainerLowest
* surfaceContainerLow
* surfaceContainerHigh
* surfaceContainerHighest

**Accent color add-ons** (12 colors):
* primary/secondary/tertiary-Fixed
* primary/secondary/tertiary-FixedDim
* onPrimary/onSecondary/onTertiary-Fixed
* onPrimary/onSecondary/onTertiary-FixedVariant

Please checkout this [design doc](https://docs.google.com/document/d/1ODqivpM_6c490T4j5XIiWCDKo5YqHy78YEFqDm4S8h4/edit?usp=sharing) for more information:)
diff --git a/packages/flutter/lib/src/material/color_scheme.dart b/packages/flutter/lib/src/material/color_scheme.dart
index a0d9212..4b6a0ff 100644
--- a/packages/flutter/lib/src/material/color_scheme.dart
+++ b/packages/flutter/lib/src/material/color_scheme.dart
@@ -13,7 +13,7 @@
 import 'theme_data.dart';
 
 /// {@template flutter.material.color_scheme.ColorScheme}
-/// A set of 30 colors based on the
+/// A set of colors based on the
 /// [Material spec](https://m3.material.io/styles/color/the-color-system/color-roles)
 /// that can be used to configure the color properties of most components.
 /// {@endtemplate}
@@ -37,21 +37,36 @@
 ///   for makers to use at their discretion and are intended to support
 ///   broader color expression in products.
 ///
+/// Each accent color group (primary, secondary and tertiary) includes '-Fixed'
+/// '-Dim' color roles, such as [primaryFixed] and [primaryFixedDim]. Fixed roles
+/// are appropriate to use in places where Container roles are normally used,
+/// but they stay the same color between light and dark themes. The '-Dim' roles
+/// provide a stronger, more emphasized color with the same fixed behavior.
+///
 /// The remaining colors of the scheme are composed of neutral colors used for
 /// backgrounds and surfaces, as well as specific colors for errors, dividers
-/// and shadows.
+/// and shadows. Surface colors are used for backgrounds and large, low-emphasis
+/// areas of the screen.
+///
+/// Material 3 also introduces tone-based surfaces and surface containers.
+/// They replace the old opacity-based model which applied a tinted overlay on
+/// top of surfaces based on their elevation. These colors include: [surfaceBright],
+/// [surfaceDim], [surfaceContainerLowest], [surfaceContainerLow], [surfaceContainer],
+/// [surfaceContainerHigh], and [surfaceContainerHighest].
 ///
 /// Many of the colors have matching 'on' colors, which are used for drawing
 /// content on top of the matching color. For example, if something is using
 /// [primary] for a background color, [onPrimary] would be used to paint text
 /// and icons on top of it. For this reason, the 'on' colors should have a
 /// contrast ratio with their matching colors of at least 4.5:1 in order to
-/// be readable.
+/// be readable. On '-FixedVariant' roles, such as [onPrimaryFixedVariant],
+/// also have the same color between light and dark themes, but compared
+/// with on '-Fixed' roles, such as [onPrimaryFixed], they provide a
+/// lower-emphasis option for text and icons.
 ///
 /// ### Setting Colors in Flutter
 ///
 ///{@macro flutter.material.colors.settingColors}
-//
 @immutable
 class ColorScheme with Diagnosticable {
   /// Create a ColorScheme instance from the given colors.
@@ -90,14 +105,26 @@
     required this.onPrimary,
     Color? primaryContainer,
     Color? onPrimaryContainer,
+    Color? primaryFixed,
+    Color? primaryFixedDim,
+    Color? onPrimaryFixed,
+    Color? onPrimaryFixedVariant,
     required this.secondary,
     required this.onSecondary,
     Color? secondaryContainer,
     Color? onSecondaryContainer,
+    Color? secondaryFixed,
+    Color? secondaryFixedDim,
+    Color? onSecondaryFixed,
+    Color? onSecondaryFixedVariant,
     Color? tertiary,
     Color? onTertiary,
     Color? tertiaryContainer,
     Color? onTertiaryContainer,
+    Color? tertiaryFixed,
+    Color? tertiaryFixedDim,
+    Color? onTertiaryFixed,
+    Color? onTertiaryFixedVariant,
     required this.error,
     required this.onError,
     Color? errorContainer,
@@ -106,6 +133,13 @@
     required this.onBackground,
     required this.surface,
     required this.onSurface,
+    Color? surfaceDim,
+    Color? surfaceBright,
+    Color? surfaceContainerLowest,
+    Color? surfaceContainerLow,
+    Color? surfaceContainer,
+    Color? surfaceContainerHigh,
+    Color? surfaceContainerHighest,
     Color? surfaceVariant,
     Color? onSurfaceVariant,
     Color? outline,
@@ -118,14 +152,33 @@
     Color? surfaceTint,
   }) : _primaryContainer = primaryContainer,
        _onPrimaryContainer = onPrimaryContainer,
+       _primaryFixed = primaryFixed,
+       _primaryFixedDim = primaryFixedDim,
+       _onPrimaryFixed = onPrimaryFixed,
+       _onPrimaryFixedVariant = onPrimaryFixedVariant,
        _secondaryContainer = secondaryContainer,
        _onSecondaryContainer = onSecondaryContainer,
+       _secondaryFixed = secondaryFixed,
+       _secondaryFixedDim = secondaryFixedDim,
+       _onSecondaryFixed = onSecondaryFixed,
+       _onSecondaryFixedVariant = onSecondaryFixedVariant,
        _tertiary = tertiary,
        _onTertiary = onTertiary,
        _tertiaryContainer = tertiaryContainer,
        _onTertiaryContainer = onTertiaryContainer,
+       _tertiaryFixed = tertiaryFixed,
+       _tertiaryFixedDim = tertiaryFixedDim,
+       _onTertiaryFixed = onTertiaryFixed,
+       _onTertiaryFixedVariant = onTertiaryFixedVariant,
        _errorContainer = errorContainer,
        _onErrorContainer = onErrorContainer,
+       _surfaceDim = surfaceDim,
+       _surfaceBright = surfaceBright,
+       _surfaceContainerLowest = surfaceContainerLowest,
+       _surfaceContainerLow = surfaceContainerLow,
+       _surfaceContainer = surfaceContainer,
+       _surfaceContainerHigh = surfaceContainerHigh,
+       _surfaceContainerHighest = surfaceContainerHighest,
        _surfaceVariant = surfaceVariant,
        _onSurfaceVariant = onSurfaceVariant,
        _outline = outline,
@@ -261,14 +314,26 @@
     this.onPrimary = Colors.white,
     Color? primaryContainer,
     Color? onPrimaryContainer,
+    Color? primaryFixed,
+    Color? primaryFixedDim,
+    Color? onPrimaryFixed,
+    Color? onPrimaryFixedVariant,
     this.secondary = const Color(0xff03dac6),
     this.onSecondary = Colors.black,
     Color? secondaryContainer,
     Color? onSecondaryContainer,
+    Color? secondaryFixed,
+    Color? secondaryFixedDim,
+    Color? onSecondaryFixed,
+    Color? onSecondaryFixedVariant,
     Color? tertiary,
     Color? onTertiary,
     Color? tertiaryContainer,
     Color? onTertiaryContainer,
+    Color? tertiaryFixed,
+    Color? tertiaryFixedDim,
+    Color? onTertiaryFixed,
+    Color? onTertiaryFixedVariant,
     this.error = const Color(0xffb00020),
     this.onError = Colors.white,
     Color? errorContainer,
@@ -277,6 +342,13 @@
     this.onBackground = Colors.black,
     this.surface = Colors.white,
     this.onSurface = Colors.black,
+    Color? surfaceDim,
+    Color? surfaceBright,
+    Color? surfaceContainerLowest,
+    Color? surfaceContainerLow,
+    Color? surfaceContainer,
+    Color? surfaceContainerHigh,
+    Color? surfaceContainerHighest,
     Color? surfaceVariant,
     Color? onSurfaceVariant,
     Color? outline,
@@ -289,14 +361,33 @@
     Color? surfaceTint,
   }) : _primaryContainer = primaryContainer,
        _onPrimaryContainer = onPrimaryContainer,
+       _primaryFixed = primaryFixed,
+       _primaryFixedDim = primaryFixedDim,
+       _onPrimaryFixed = onPrimaryFixed,
+       _onPrimaryFixedVariant = onPrimaryFixedVariant,
        _secondaryContainer = secondaryContainer,
        _onSecondaryContainer = onSecondaryContainer,
+       _secondaryFixed = secondaryFixed,
+       _secondaryFixedDim = secondaryFixedDim,
+       _onSecondaryFixed = onSecondaryFixed,
+       _onSecondaryFixedVariant = onSecondaryFixedVariant,
        _tertiary = tertiary,
        _onTertiary = onTertiary,
        _tertiaryContainer = tertiaryContainer,
        _onTertiaryContainer = onTertiaryContainer,
+       _tertiaryFixed = tertiaryFixed,
+       _tertiaryFixedDim = tertiaryFixedDim,
+       _onTertiaryFixed = onTertiaryFixed,
+       _onTertiaryFixedVariant = onTertiaryFixedVariant,
        _errorContainer = errorContainer,
        _onErrorContainer = onErrorContainer,
+       _surfaceDim = surfaceDim,
+       _surfaceBright = surfaceBright,
+       _surfaceContainerLowest = surfaceContainerLowest,
+       _surfaceContainerLow = surfaceContainerLow,
+       _surfaceContainer = surfaceContainer,
+       _surfaceContainerHigh = surfaceContainerHigh,
+       _surfaceContainerHighest = surfaceContainerHighest,
        _surfaceVariant = surfaceVariant,
        _onSurfaceVariant = onSurfaceVariant,
        _outline = outline,
@@ -342,14 +433,26 @@
     this.onPrimary = Colors.black,
     Color? primaryContainer,
     Color? onPrimaryContainer,
+    Color? primaryFixed,
+    Color? primaryFixedDim,
+    Color? onPrimaryFixed,
+    Color? onPrimaryFixedVariant,
     this.secondary = const Color(0xff03dac6),
     this.onSecondary = Colors.black,
     Color? secondaryContainer,
     Color? onSecondaryContainer,
+    Color? secondaryFixed,
+    Color? secondaryFixedDim,
+    Color? onSecondaryFixed,
+    Color? onSecondaryFixedVariant,
     Color? tertiary,
     Color? onTertiary,
     Color? tertiaryContainer,
     Color? onTertiaryContainer,
+    Color? tertiaryFixed,
+    Color? tertiaryFixedDim,
+    Color? onTertiaryFixed,
+    Color? onTertiaryFixedVariant,
     this.error = const Color(0xffcf6679),
     this.onError = Colors.black,
     Color? errorContainer,
@@ -358,6 +461,13 @@
     this.onBackground = Colors.white,
     this.surface = const Color(0xff121212),
     this.onSurface = Colors.white,
+    Color? surfaceDim,
+    Color? surfaceBright,
+    Color? surfaceContainerLowest,
+    Color? surfaceContainerLow,
+    Color? surfaceContainer,
+    Color? surfaceContainerHigh,
+    Color? surfaceContainerHighest,
     Color? surfaceVariant,
     Color? onSurfaceVariant,
     Color? outline,
@@ -370,14 +480,33 @@
     Color? surfaceTint,
   }) : _primaryContainer = primaryContainer,
        _onPrimaryContainer = onPrimaryContainer,
+       _primaryFixed = primaryFixed,
+       _primaryFixedDim = primaryFixedDim,
+       _onPrimaryFixed = onPrimaryFixed,
+       _onPrimaryFixedVariant = onPrimaryFixedVariant,
        _secondaryContainer = secondaryContainer,
        _onSecondaryContainer = onSecondaryContainer,
+       _secondaryFixed = secondaryFixed,
+       _secondaryFixedDim = secondaryFixedDim,
+       _onSecondaryFixed = onSecondaryFixed,
+       _onSecondaryFixedVariant = onSecondaryFixedVariant,
        _tertiary = tertiary,
        _onTertiary = onTertiary,
        _tertiaryContainer = tertiaryContainer,
        _onTertiaryContainer = onTertiaryContainer,
+       _tertiaryFixed = tertiaryFixed,
+       _tertiaryFixedDim = tertiaryFixedDim,
+       _onTertiaryFixed = onTertiaryFixed,
+       _onTertiaryFixedVariant = onTertiaryFixedVariant,
        _errorContainer = errorContainer,
        _onErrorContainer = onErrorContainer,
+       _surfaceDim = surfaceDim,
+       _surfaceBright = surfaceBright,
+       _surfaceContainerLowest = surfaceContainerLowest,
+       _surfaceContainerLow = surfaceContainerLow,
+       _surfaceContainer = surfaceContainer,
+       _surfaceContainerHigh = surfaceContainerHigh,
+       _surfaceContainerHighest = surfaceContainerHighest,
        _surfaceVariant = surfaceVariant,
        _onSurfaceVariant = onSurfaceVariant,
        _outline = outline,
@@ -418,14 +547,26 @@
     this.onPrimary = Colors.white,
     Color? primaryContainer,
     Color? onPrimaryContainer,
+    Color? primaryFixed,
+    Color? primaryFixedDim,
+    Color? onPrimaryFixed,
+    Color? onPrimaryFixedVariant,
     this.secondary = const Color(0xff66fff9),
     this.onSecondary = Colors.black,
     Color? secondaryContainer,
     Color? onSecondaryContainer,
+    Color? secondaryFixed,
+    Color? secondaryFixedDim,
+    Color? onSecondaryFixed,
+    Color? onSecondaryFixedVariant,
     Color? tertiary,
     Color? onTertiary,
     Color? tertiaryContainer,
     Color? onTertiaryContainer,
+    Color? tertiaryFixed,
+    Color? tertiaryFixedDim,
+    Color? onTertiaryFixed,
+    Color? onTertiaryFixedVariant,
     this.error = const Color(0xff790000),
     this.onError = Colors.white,
     Color? errorContainer,
@@ -434,6 +575,13 @@
     this.onBackground = Colors.black,
     this.surface = Colors.white,
     this.onSurface = Colors.black,
+    Color? surfaceDim,
+    Color? surfaceBright,
+    Color? surfaceContainerLowest,
+    Color? surfaceContainerLow,
+    Color? surfaceContainer,
+    Color? surfaceContainerHigh,
+    Color? surfaceContainerHighest,
     Color? surfaceVariant,
     Color? onSurfaceVariant,
     Color? outline,
@@ -446,14 +594,33 @@
     Color? surfaceTint,
   }) : _primaryContainer = primaryContainer,
        _onPrimaryContainer = onPrimaryContainer,
+       _primaryFixed = primaryFixed,
+       _primaryFixedDim = primaryFixedDim,
+       _onPrimaryFixed = onPrimaryFixed,
+       _onPrimaryFixedVariant = onPrimaryFixedVariant,
        _secondaryContainer = secondaryContainer,
        _onSecondaryContainer = onSecondaryContainer,
+       _secondaryFixed = secondaryFixed,
+       _secondaryFixedDim = secondaryFixedDim,
+       _onSecondaryFixed = onSecondaryFixed,
+       _onSecondaryFixedVariant = onSecondaryFixedVariant,
        _tertiary = tertiary,
        _onTertiary = onTertiary,
        _tertiaryContainer = tertiaryContainer,
        _onTertiaryContainer = onTertiaryContainer,
+       _tertiaryFixed = tertiaryFixed,
+       _tertiaryFixedDim = tertiaryFixedDim,
+       _onTertiaryFixed = onTertiaryFixed,
+       _onTertiaryFixedVariant = onTertiaryFixedVariant,
        _errorContainer = errorContainer,
        _onErrorContainer = onErrorContainer,
+       _surfaceDim = surfaceDim,
+       _surfaceBright = surfaceBright,
+       _surfaceContainerLowest = surfaceContainerLowest,
+       _surfaceContainerLow = surfaceContainerLow,
+       _surfaceContainer = surfaceContainer,
+       _surfaceContainerHigh = surfaceContainerHigh,
+       _surfaceContainerHighest = surfaceContainerHighest,
        _surfaceVariant = surfaceVariant,
        _onSurfaceVariant = onSurfaceVariant,
        _outline = outline,
@@ -499,14 +666,26 @@
     this.onPrimary = Colors.black,
     Color? primaryContainer,
     Color? onPrimaryContainer,
+    Color? primaryFixed,
+    Color? primaryFixedDim,
+    Color? onPrimaryFixed,
+    Color? onPrimaryFixedVariant,
     this.secondary = const Color(0xff66fff9),
     this.onSecondary = Colors.black,
     Color? secondaryContainer,
     Color? onSecondaryContainer,
+    Color? secondaryFixed,
+    Color? secondaryFixedDim,
+    Color? onSecondaryFixed,
+    Color? onSecondaryFixedVariant,
     Color? tertiary,
     Color? onTertiary,
     Color? tertiaryContainer,
     Color? onTertiaryContainer,
+    Color? tertiaryFixed,
+    Color? tertiaryFixedDim,
+    Color? onTertiaryFixed,
+    Color? onTertiaryFixedVariant,
     this.error = const Color(0xff9b374d),
     this.onError = Colors.black,
     Color? errorContainer,
@@ -515,6 +694,13 @@
     this.onBackground = Colors.white,
     this.surface = const Color(0xff121212),
     this.onSurface = Colors.white,
+    Color? surfaceDim,
+    Color? surfaceBright,
+    Color? surfaceContainerLowest,
+    Color? surfaceContainerLow,
+    Color? surfaceContainer,
+    Color? surfaceContainerHigh,
+    Color? surfaceContainerHighest,
     Color? surfaceVariant,
     Color? onSurfaceVariant,
     Color? outline,
@@ -527,14 +713,33 @@
     Color? surfaceTint,
   }) : _primaryContainer = primaryContainer,
        _onPrimaryContainer = onPrimaryContainer,
+       _primaryFixed = primaryFixed,
+       _primaryFixedDim = primaryFixedDim,
+       _onPrimaryFixed = onPrimaryFixed,
+       _onPrimaryFixedVariant = onPrimaryFixedVariant,
        _secondaryContainer = secondaryContainer,
        _onSecondaryContainer = onSecondaryContainer,
+       _secondaryFixed = secondaryFixed,
+       _secondaryFixedDim = secondaryFixedDim,
+       _onSecondaryFixed = onSecondaryFixed,
+       _onSecondaryFixedVariant = onSecondaryFixedVariant,
        _tertiary = tertiary,
        _onTertiary = onTertiary,
        _tertiaryContainer = tertiaryContainer,
        _onTertiaryContainer = onTertiaryContainer,
+       _tertiaryFixed = tertiaryFixed,
+       _tertiaryFixedDim = tertiaryFixedDim,
+       _onTertiaryFixed = onTertiaryFixed,
+       _onTertiaryFixedVariant = onTertiaryFixedVariant,
        _errorContainer = errorContainer,
        _onErrorContainer = onErrorContainer,
+       _surfaceDim = surfaceDim,
+       _surfaceBright = surfaceBright,
+       _surfaceContainerLowest = surfaceContainerLowest,
+       _surfaceContainerLow = surfaceContainerLow,
+       _surfaceContainer = surfaceContainer,
+       _surfaceContainerHigh = surfaceContainerHigh,
+       _surfaceContainerHighest = surfaceContainerHighest,
        _surfaceVariant = surfaceVariant,
        _onSurfaceVariant = onSurfaceVariant,
        _outline = outline,
@@ -612,6 +817,25 @@
   /// <https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html>.
   Color get onPrimaryContainer => _onPrimaryContainer ?? onPrimary;
 
+  final Color? _primaryFixed;
+  /// A substitute for [primaryContainer] that's the same color for the dark
+  /// and light themes.
+  Color get primaryFixed => _primaryFixed ?? primary;
+
+  final Color? _primaryFixedDim;
+  /// A color used for elements needing more emphasis than [primaryFixed].
+  Color get primaryFixedDim => _primaryFixedDim ?? primary;
+
+  final Color? _onPrimaryFixed;
+  /// A color that is used for text and icons that exist on top of elements having
+  /// [primaryFixed] color.
+  Color get onPrimaryFixed => _onPrimaryFixed ?? onPrimary;
+
+  final Color? _onPrimaryFixedVariant;
+  /// A color that provides a lower-emphasis option for text and icons than
+  /// [onPrimaryFixed].
+  Color get onPrimaryFixedVariant => _onPrimaryFixedVariant ?? onPrimary;
+
   /// An accent color used for less prominent components in the UI, such as
   /// filter chips, while expanding the opportunity for color expression.
   final Color secondary;
@@ -636,6 +860,25 @@
   /// <https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html>.
   Color get onSecondaryContainer => _onSecondaryContainer ?? onSecondary;
 
+  final Color? _secondaryFixed;
+  /// A substitute for [secondaryContainer] that's the same color for the dark
+  /// and light themes.
+  Color get secondaryFixed => _secondaryFixed ?? secondary;
+
+  final Color? _secondaryFixedDim;
+  /// A color used for elements needing more emphasis than [secondaryFixed].
+  Color get secondaryFixedDim => _secondaryFixedDim ?? secondary;
+
+  final Color? _onSecondaryFixed;
+  /// A color that is used for text and icons that exist on top of elements having
+  /// [secondaryFixed] color.
+  Color get onSecondaryFixed => _onSecondaryFixed ?? onSecondary;
+
+  final Color? _onSecondaryFixedVariant;
+  /// A color that provides a lower-emphasis option for text and icons than
+  /// [onSecondaryFixed].
+  Color get onSecondaryFixedVariant => _onSecondaryFixedVariant ?? onSecondary;
+
   final Color? _tertiary;
   /// A color used as a contrasting accent that can balance [primary]
   /// and [secondary] colors or bring heightened attention to an element,
@@ -663,6 +906,25 @@
   /// <https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html>.
   Color get onTertiaryContainer => _onTertiaryContainer ?? onTertiary;
 
+  final Color? _tertiaryFixed;
+  /// A substitute for [tertiaryContainer] that's the same color for dark
+  /// and light themes.
+  Color get tertiaryFixed => _tertiaryFixed ?? tertiary;
+
+  final Color? _tertiaryFixedDim;
+  /// A color used for elements needing more emphasis than [tertiaryFixed].
+  Color get tertiaryFixedDim => _tertiaryFixedDim ?? tertiary;
+
+  final Color? _onTertiaryFixed;
+  /// A color that is used for text and icons that exist on top of elements having
+  /// [tertiaryFixed] color.
+  Color get onTertiaryFixed => _onTertiaryFixed ?? onTertiary;
+
+  final Color? _onTertiaryFixedVariant;
+  /// A color that provides a lower-emphasis option for text and icons than
+  /// [onTertiaryFixed].
+  Color get onTertiaryFixedVariant => _onTertiaryFixedVariant ?? onTertiary;
+
   /// The color to use for input validation errors, e.g. for
   /// [InputDecoration.errorText].
   final Color error;
@@ -712,6 +974,45 @@
   /// a component using [surface].
   Color get surfaceVariant => _surfaceVariant ?? surface;
 
+  final Color? _surfaceDim;
+  /// A color that's always darkest in the dark or light theme.
+  Color get surfaceDim => _surfaceDim ?? surface;
+
+  final Color? _surfaceBright;
+  /// A color that's always the lightest in the dark or light theme.
+  Color get surfaceBright => _surfaceBright ?? surface;
+
+  final Color? _surfaceContainerLowest;
+  /// A surface container color with the lightest tone and the least emphasis
+  /// relative to the surface.
+  Color get surfaceContainerLowest => _surfaceContainerLowest ?? surface;
+
+  final Color? _surfaceContainerLow;
+  /// A surface container color with a lighter tone that creates less emphasis
+  /// than [surfaceContainer] but more emphasis than [surfaceContainerLowest].
+  Color get surfaceContainerLow => _surfaceContainerLow ?? surface;
+
+  final Color? _surfaceContainer;
+  /// A recommended color role for a distinct area within the surface.
+  ///
+  /// Surface container color roles are independent of elevation. They replace the old
+  /// opacity-based model which applied a tinted overlay on top of
+  /// surfaces based on their elevation.
+  ///
+  /// Surface container colors include [surfaceContainerLowest], [surfaceContainerLow],
+  /// [surfaceContainer], [surfaceContainerHigh] and [surfaceContainerHighest].
+  Color get surfaceContainer => _surfaceContainer ?? surface;
+
+  final Color? _surfaceContainerHigh;
+  /// A surface container color with a darker tone. It is used to create more
+  /// emphasis than [surfaceContainer] but less emphasis than [surfaceContainerHighest].
+  Color get surfaceContainerHigh => _surfaceContainerHigh ?? surface;
+
+  final Color? _surfaceContainerHighest;
+  /// A surface container color with the darkest tone. It is used to create the
+  /// most emphasis against the surface.
+  Color get surfaceContainerHighest => _surfaceContainerHighest ?? surface;
+
   final Color? _onSurfaceVariant;
   /// A color that's clearly legible when drawn on [surfaceVariant].
   ///
@@ -771,14 +1072,26 @@
     Color? onPrimary,
     Color? primaryContainer,
     Color? onPrimaryContainer,
+    Color? primaryFixed,
+    Color? primaryFixedDim,
+    Color? onPrimaryFixed,
+    Color? onPrimaryFixedVariant,
     Color? secondary,
     Color? onSecondary,
     Color? secondaryContainer,
     Color? onSecondaryContainer,
+    Color? secondaryFixed,
+    Color? secondaryFixedDim,
+    Color? onSecondaryFixed,
+    Color? onSecondaryFixedVariant,
     Color? tertiary,
     Color? onTertiary,
     Color? tertiaryContainer,
     Color? onTertiaryContainer,
+    Color? tertiaryFixed,
+    Color? tertiaryFixedDim,
+    Color? onTertiaryFixed,
+    Color? onTertiaryFixedVariant,
     Color? error,
     Color? onError,
     Color? errorContainer,
@@ -787,6 +1100,13 @@
     Color? onBackground,
     Color? surface,
     Color? onSurface,
+    Color? surfaceDim,
+    Color? surfaceBright,
+    Color? surfaceContainerLowest,
+    Color? surfaceContainerLow,
+    Color? surfaceContainer,
+    Color? surfaceContainerHigh,
+    Color? surfaceContainerHighest,
     Color? surfaceVariant,
     Color? onSurfaceVariant,
     Color? outline,
@@ -804,14 +1124,26 @@
       onPrimary : onPrimary ?? this.onPrimary,
       primaryContainer : primaryContainer ?? this.primaryContainer,
       onPrimaryContainer : onPrimaryContainer ?? this.onPrimaryContainer,
+      primaryFixed: primaryFixed ?? this.primaryFixed,
+      primaryFixedDim: primaryFixedDim ?? this.primaryFixedDim,
+      onPrimaryFixed: onPrimaryFixed ?? this.onPrimaryFixed,
+      onPrimaryFixedVariant: onPrimaryFixedVariant ?? this.onPrimaryFixedVariant,
       secondary : secondary ?? this.secondary,
       onSecondary : onSecondary ?? this.onSecondary,
       secondaryContainer : secondaryContainer ?? this.secondaryContainer,
       onSecondaryContainer : onSecondaryContainer ?? this.onSecondaryContainer,
+      secondaryFixed: secondaryFixed ?? this.secondaryFixed,
+      secondaryFixedDim: secondaryFixedDim ?? this.secondaryFixedDim,
+      onSecondaryFixed: onSecondaryFixed ?? this.onSecondaryFixed,
+      onSecondaryFixedVariant: onSecondaryFixedVariant ?? this.onSecondaryFixedVariant,
       tertiary : tertiary ?? this.tertiary,
       onTertiary : onTertiary ?? this.onTertiary,
       tertiaryContainer : tertiaryContainer ?? this.tertiaryContainer,
       onTertiaryContainer : onTertiaryContainer ?? this.onTertiaryContainer,
+      tertiaryFixed: tertiaryFixed ?? this.tertiaryFixed,
+      tertiaryFixedDim: tertiaryFixedDim ?? this.tertiaryFixedDim,
+      onTertiaryFixed: onTertiaryFixed ?? this.onTertiaryFixed,
+      onTertiaryFixedVariant: onTertiaryFixedVariant ?? this.onTertiaryFixedVariant,
       error : error ?? this.error,
       onError : onError ?? this.onError,
       errorContainer : errorContainer ?? this.errorContainer,
@@ -820,6 +1152,13 @@
       onBackground : onBackground ?? this.onBackground,
       surface : surface ?? this.surface,
       onSurface : onSurface ?? this.onSurface,
+      surfaceDim : surfaceDim ?? this.surfaceDim,
+      surfaceBright : surfaceBright ?? this.surfaceBright,
+      surfaceContainerLowest : surfaceContainerLowest ?? this.surfaceContainerLowest,
+      surfaceContainerLow : surfaceContainerLow ?? this.surfaceContainerLow,
+      surfaceContainer : surfaceContainer ?? this.surfaceContainer,
+      surfaceContainerHigh : surfaceContainerHigh ?? this.surfaceContainerHigh,
+      surfaceContainerHighest : surfaceContainerHighest ?? this.surfaceContainerHighest,
       surfaceVariant : surfaceVariant ?? this.surfaceVariant,
       onSurfaceVariant : onSurfaceVariant ?? this.onSurfaceVariant,
       outline : outline ?? this.outline,
@@ -846,14 +1185,26 @@
       onPrimary: Color.lerp(a.onPrimary, b.onPrimary, t)!,
       primaryContainer: Color.lerp(a.primaryContainer, b.primaryContainer, t),
       onPrimaryContainer: Color.lerp(a.onPrimaryContainer, b.onPrimaryContainer, t),
+      primaryFixed: Color.lerp(a.primaryFixed, b.primaryFixed, t),
+      primaryFixedDim: Color.lerp(a.primaryFixedDim, b.primaryFixedDim, t),
+      onPrimaryFixed: Color.lerp(a.onPrimaryFixed, b.onPrimaryFixed, t),
+      onPrimaryFixedVariant: Color.lerp(a.onPrimaryFixedVariant, b.onPrimaryFixedVariant, t),
       secondary: Color.lerp(a.secondary, b.secondary, t)!,
       onSecondary: Color.lerp(a.onSecondary, b.onSecondary, t)!,
       secondaryContainer: Color.lerp(a.secondaryContainer, b.secondaryContainer, t),
       onSecondaryContainer: Color.lerp(a.onSecondaryContainer, b.onSecondaryContainer, t),
+      secondaryFixed: Color.lerp(a.secondaryFixed, b.secondaryFixed, t),
+      secondaryFixedDim: Color.lerp(a.secondaryFixedDim, b.secondaryFixedDim, t),
+      onSecondaryFixed: Color.lerp(a.onSecondaryFixed, b.onSecondaryFixed, t),
+      onSecondaryFixedVariant: Color.lerp(a.onSecondaryFixedVariant, b.onSecondaryFixedVariant, t),
       tertiary: Color.lerp(a.tertiary, b.tertiary, t),
       onTertiary: Color.lerp(a.onTertiary, b.onTertiary, t),
       tertiaryContainer: Color.lerp(a.tertiaryContainer, b.tertiaryContainer, t),
       onTertiaryContainer: Color.lerp(a.onTertiaryContainer, b.onTertiaryContainer, t),
+      tertiaryFixed: Color.lerp(a.tertiaryFixed, b.tertiaryFixed, t),
+      tertiaryFixedDim: Color.lerp(a.tertiaryFixedDim, b.tertiaryFixedDim, t),
+      onTertiaryFixed: Color.lerp(a.onTertiaryFixed, b.onTertiaryFixed, t),
+      onTertiaryFixedVariant: Color.lerp(a.onTertiaryFixedVariant, b.onTertiaryFixedVariant, t),
       error: Color.lerp(a.error, b.error, t)!,
       onError: Color.lerp(a.onError, b.onError, t)!,
       errorContainer: Color.lerp(a.errorContainer, b.errorContainer, t),
@@ -862,6 +1213,13 @@
       onBackground: Color.lerp(a.onBackground, b.onBackground, t)!,
       surface: Color.lerp(a.surface, b.surface, t)!,
       onSurface: Color.lerp(a.onSurface, b.onSurface, t)!,
+      surfaceDim: Color.lerp(a.surfaceDim, b.surfaceDim, t),
+      surfaceBright: Color.lerp(a.surfaceBright, b.surfaceBright, t),
+      surfaceContainerLowest: Color.lerp(a.surfaceContainerLowest, b.surfaceContainerLowest, t),
+      surfaceContainerLow: Color.lerp(a.surfaceContainerLow, b.surfaceContainerLow, t),
+      surfaceContainer: Color.lerp(a.surfaceContainer, b.surfaceContainer, t),
+      surfaceContainerHigh: Color.lerp(a.surfaceContainerHigh, b.surfaceContainerHigh, t),
+      surfaceContainerHighest: Color.lerp(a.surfaceContainerHighest, b.surfaceContainerHighest, t),
       surfaceVariant: Color.lerp(a.surfaceVariant, b.surfaceVariant, t),
       onSurfaceVariant: Color.lerp(a.onSurfaceVariant, b.onSurfaceVariant, t),
       outline: Color.lerp(a.outline, b.outline, t),
@@ -889,14 +1247,26 @@
       && other.onPrimary == onPrimary
       && other.primaryContainer == primaryContainer
       && other.onPrimaryContainer == onPrimaryContainer
+      && other.primaryFixed == primaryFixed
+      && other.primaryFixedDim == primaryFixedDim
+      && other.onPrimaryFixed == onPrimaryFixed
+      && other.onPrimaryFixedVariant == onPrimaryFixedVariant
       && other.secondary == secondary
       && other.onSecondary == onSecondary
       && other.secondaryContainer == secondaryContainer
       && other.onSecondaryContainer == onSecondaryContainer
+      && other.secondaryFixed == secondaryFixed
+      && other.secondaryFixedDim == secondaryFixedDim
+      && other.onSecondaryFixed == onSecondaryFixed
+      && other.onSecondaryFixedVariant == onSecondaryFixedVariant
       && other.tertiary == tertiary
       && other.onTertiary == onTertiary
       && other.tertiaryContainer == tertiaryContainer
       && other.onTertiaryContainer == onTertiaryContainer
+      && other.tertiaryFixed == tertiaryFixed
+      && other.tertiaryFixedDim == tertiaryFixedDim
+      && other.onTertiaryFixed == onTertiaryFixed
+      && other.onTertiaryFixedVariant == onTertiaryFixedVariant
       && other.error == error
       && other.onError == onError
       && other.errorContainer == errorContainer
@@ -905,6 +1275,13 @@
       && other.onBackground == onBackground
       && other.surface == surface
       && other.onSurface == onSurface
+      && other.surfaceDim == surfaceDim
+      && other.surfaceBright == surfaceBright
+      && other.surfaceContainerLowest == surfaceContainerLowest
+      && other.surfaceContainerLow == surfaceContainerLow
+      && other.surfaceContainer == surfaceContainer
+      && other.surfaceContainerHigh == surfaceContainerHigh
+      && other.surfaceContainerHighest == surfaceContainerHighest
       && other.surfaceVariant == surfaceVariant
       && other.onSurfaceVariant == onSurfaceVariant
       && other.outline == outline
@@ -941,6 +1318,13 @@
     Object.hash(
       surface,
       onSurface,
+      surfaceDim,
+      surfaceBright,
+      surfaceContainerLowest,
+      surfaceContainerLow,
+      surfaceContainer,
+      surfaceContainerHigh,
+      surfaceContainerHighest,
       surfaceVariant,
       onSurfaceVariant,
       outline,
@@ -951,6 +1335,20 @@
       onInverseSurface,
       inversePrimary,
       surfaceTint,
+      Object.hash(
+        primaryFixed,
+        primaryFixedDim,
+        onPrimaryFixed,
+        onPrimaryFixedVariant,
+        secondaryFixed,
+        secondaryFixedDim,
+        onSecondaryFixed,
+        onSecondaryFixedVariant,
+        tertiaryFixed,
+        tertiaryFixedDim,
+        onTertiaryFixed,
+        onTertiaryFixedVariant,
+      )
     ),
   );
 
@@ -963,14 +1361,26 @@
     properties.add(ColorProperty('onPrimary', onPrimary, defaultValue: defaultScheme.onPrimary));
     properties.add(ColorProperty('primaryContainer', primaryContainer, defaultValue: defaultScheme.primaryContainer));
     properties.add(ColorProperty('onPrimaryContainer', onPrimaryContainer, defaultValue: defaultScheme.onPrimaryContainer));
+    properties.add(ColorProperty('primaryFixed', primaryFixed, defaultValue: defaultScheme.primaryFixed));
+    properties.add(ColorProperty('primaryFixedDim', primaryFixedDim, defaultValue: defaultScheme.primaryFixedDim));
+    properties.add(ColorProperty('onPrimaryFixed', onPrimaryFixed, defaultValue: defaultScheme.onPrimaryFixed));
+    properties.add(ColorProperty('onPrimaryFixedVariant', onPrimaryFixedVariant, defaultValue: defaultScheme.onPrimaryFixedVariant));
     properties.add(ColorProperty('secondary', secondary, defaultValue: defaultScheme.secondary));
     properties.add(ColorProperty('onSecondary', onSecondary, defaultValue: defaultScheme.onSecondary));
     properties.add(ColorProperty('secondaryContainer', secondaryContainer, defaultValue: defaultScheme.secondaryContainer));
     properties.add(ColorProperty('onSecondaryContainer', onSecondaryContainer, defaultValue: defaultScheme.onSecondaryContainer));
+    properties.add(ColorProperty('secondaryFixed', secondaryFixed, defaultValue: defaultScheme.secondaryFixed));
+    properties.add(ColorProperty('secondaryFixedDim', secondaryFixedDim, defaultValue: defaultScheme.secondaryFixedDim));
+    properties.add(ColorProperty('onSecondaryFixed', onSecondaryFixed, defaultValue: defaultScheme.onSecondaryFixed));
+    properties.add(ColorProperty('onSecondaryFixedVariant', onSecondaryFixedVariant, defaultValue: defaultScheme.onSecondaryFixedVariant));
     properties.add(ColorProperty('tertiary', tertiary, defaultValue: defaultScheme.tertiary));
     properties.add(ColorProperty('onTertiary', onTertiary, defaultValue: defaultScheme.onTertiary));
     properties.add(ColorProperty('tertiaryContainer', tertiaryContainer, defaultValue: defaultScheme.tertiaryContainer));
     properties.add(ColorProperty('onTertiaryContainer', onTertiaryContainer, defaultValue: defaultScheme.onTertiaryContainer));
+    properties.add(ColorProperty('tertiaryFixed', tertiaryFixed, defaultValue: defaultScheme.tertiaryFixed));
+    properties.add(ColorProperty('tertiaryFixedDim', tertiaryFixedDim, defaultValue: defaultScheme.tertiaryFixedDim));
+    properties.add(ColorProperty('onTertiaryFixed', onTertiaryFixed, defaultValue: defaultScheme.onTertiaryFixed));
+    properties.add(ColorProperty('onTertiaryFixedVariant', onTertiaryFixedVariant, defaultValue: defaultScheme.onTertiaryFixedVariant));
     properties.add(ColorProperty('error', error, defaultValue: defaultScheme.error));
     properties.add(ColorProperty('onError', onError, defaultValue: defaultScheme.onError));
     properties.add(ColorProperty('errorContainer', errorContainer, defaultValue: defaultScheme.errorContainer));
@@ -979,6 +1389,13 @@
     properties.add(ColorProperty('onBackground', onBackground, defaultValue: defaultScheme.onBackground));
     properties.add(ColorProperty('surface', surface, defaultValue: defaultScheme.surface));
     properties.add(ColorProperty('onSurface', onSurface, defaultValue: defaultScheme.onSurface));
+    properties.add(ColorProperty('surfaceDim', surfaceDim, defaultValue: defaultScheme.surfaceDim));
+    properties.add(ColorProperty('surfaceBright', surfaceBright, defaultValue: defaultScheme.surfaceBright));
+    properties.add(ColorProperty('surfaceContainerLowest', surfaceContainerLowest, defaultValue: defaultScheme.surfaceContainerLowest));
+    properties.add(ColorProperty('surfaceContainerLow', surfaceContainerLow, defaultValue: defaultScheme.surfaceContainerLow));
+    properties.add(ColorProperty('surfaceContainer', surfaceContainer, defaultValue: defaultScheme.surfaceContainer));
+    properties.add(ColorProperty('surfaceContainerHigh', surfaceContainerHigh, defaultValue: defaultScheme.surfaceContainerHigh));
+    properties.add(ColorProperty('surfaceContainerHighest', surfaceContainerHighest, defaultValue: defaultScheme.surfaceContainerHighest));
     properties.add(ColorProperty('surfaceVariant', surfaceVariant, defaultValue: defaultScheme.surfaceVariant));
     properties.add(ColorProperty('onSurfaceVariant', onSurfaceVariant, defaultValue: defaultScheme.onSurfaceVariant));
     properties.add(ColorProperty('outline', outline, defaultValue: defaultScheme.outline));
@@ -1156,7 +1573,8 @@
         canvas: canvas,
         rect: Rect.fromLTRB(0, 0, paintWidth, paintHeight),
         image: image,
-        filterQuality: FilterQuality.none);
+        filterQuality: FilterQuality.none,
+      );
 
       final ui.Picture picture = pictureRecorder.endRecording();
       scaledImage = await picture.toImage(paintWidth.toInt(), paintHeight.toInt());
diff --git a/packages/flutter/test/material/color_scheme_test.dart b/packages/flutter/test/material/color_scheme_test.dart
index 9b5df33..c597a37 100644
--- a/packages/flutter/test/material/color_scheme_test.dart
+++ b/packages/flutter/test/material/color_scheme_test.dart
@@ -26,14 +26,26 @@
     expect(scheme.onPrimary, const Color(0xffffffff));
     expect(scheme.primaryContainer, scheme.primary);
     expect(scheme.onPrimaryContainer, scheme.onPrimary);
+    expect(scheme.primaryFixed, scheme.primary);
+    expect(scheme.primaryFixedDim, scheme.primary);
+    expect(scheme.onPrimaryFixed, scheme.onPrimary);
+    expect(scheme.onPrimaryFixedVariant, scheme.onPrimary);
     expect(scheme.secondary, const Color(0xff03dac6));
     expect(scheme.onSecondary, const Color(0xff000000));
     expect(scheme.secondaryContainer, scheme.secondary);
     expect(scheme.onSecondaryContainer, scheme.onSecondary);
+    expect(scheme.secondaryFixed, scheme.secondary);
+    expect(scheme.secondaryFixedDim, scheme.secondary);
+    expect(scheme.onSecondaryFixed, scheme.onSecondary);
+    expect(scheme.onSecondaryFixedVariant, scheme.onSecondary);
     expect(scheme.tertiary, scheme.secondary);
     expect(scheme.onTertiary, scheme.onSecondary);
     expect(scheme.tertiaryContainer, scheme.tertiary);
     expect(scheme.onTertiaryContainer, scheme.onTertiary);
+    expect(scheme.tertiaryFixed, scheme.tertiary);
+    expect(scheme.tertiaryFixedDim, scheme.tertiary);
+    expect(scheme.onTertiaryFixed, scheme.onTertiary);
+    expect(scheme.onTertiaryFixedVariant, scheme.onTertiary);
     expect(scheme.error, const Color(0xffb00020));
     expect(scheme.onError, const Color(0xffffffff));
     expect(scheme.errorContainer, scheme.error);
@@ -41,6 +53,13 @@
     expect(scheme.background, const Color(0xffffffff));
     expect(scheme.onBackground, const Color(0xff000000));
     expect(scheme.surface, const Color(0xffffffff));
+    expect(scheme.surfaceBright, scheme.surface);
+    expect(scheme.surfaceDim, scheme.surface);
+    expect(scheme.surfaceContainerLowest, scheme.surface);
+    expect(scheme.surfaceContainerLow, scheme.surface);
+    expect(scheme.surfaceContainer, scheme.surface);
+    expect(scheme.surfaceContainerHigh, scheme.surface);
+    expect(scheme.surfaceContainerHighest, scheme.surface);
     expect(scheme.onSurface, const Color(0xff000000));
     expect(scheme.surfaceVariant, scheme.surface);
     expect(scheme.onSurfaceVariant, scheme.onSurface);
@@ -65,14 +84,26 @@
     expect(scheme.onPrimary, const Color(0xff000000));
     expect(scheme.primaryContainer, scheme.primary);
     expect(scheme.onPrimaryContainer, scheme.onPrimary);
+    expect(scheme.primaryFixed, scheme.primary);
+    expect(scheme.primaryFixedDim, scheme.primary);
+    expect(scheme.onPrimaryFixed, scheme.onPrimary);
+    expect(scheme.onPrimaryFixedVariant, scheme.onPrimary);
     expect(scheme.secondary, const Color(0xff03dac6));
     expect(scheme.onSecondary, const Color(0xff000000));
     expect(scheme.secondaryContainer, scheme.secondary);
     expect(scheme.onSecondaryContainer, scheme.onSecondary);
+    expect(scheme.secondaryFixed, scheme.secondary);
+    expect(scheme.secondaryFixedDim, scheme.secondary);
+    expect(scheme.onSecondaryFixed, scheme.onSecondary);
+    expect(scheme.onSecondaryFixedVariant, scheme.onSecondary);
     expect(scheme.tertiary, scheme.secondary);
     expect(scheme.onTertiary, scheme.onSecondary);
     expect(scheme.tertiaryContainer, scheme.tertiary);
     expect(scheme.onTertiaryContainer, scheme.onTertiary);
+    expect(scheme.tertiaryFixed, scheme.tertiary);
+    expect(scheme.tertiaryFixedDim, scheme.tertiary);
+    expect(scheme.onTertiaryFixed, scheme.onTertiary);
+    expect(scheme.onTertiaryFixedVariant, scheme.onTertiary);
     expect(scheme.error, const Color(0xffcf6679));
     expect(scheme.onError, const Color(0xff000000));
     expect(scheme.errorContainer, scheme.error);
@@ -80,6 +111,13 @@
     expect(scheme.background, const Color(0xff121212));
     expect(scheme.onBackground, const Color(0xffffffff));
     expect(scheme.surface, const Color(0xff121212));
+    expect(scheme.surfaceBright, scheme.surface);
+    expect(scheme.surfaceDim, scheme.surface);
+    expect(scheme.surfaceContainerLowest, scheme.surface);
+    expect(scheme.surfaceContainerLow, scheme.surface);
+    expect(scheme.surfaceContainer, scheme.surface);
+    expect(scheme.surfaceContainerHigh, scheme.surface);
+    expect(scheme.surfaceContainerHighest, scheme.surface);
     expect(scheme.onSurface, const Color(0xffffffff));
     expect(scheme.surfaceVariant, scheme.surface);
     expect(scheme.onSurfaceVariant, scheme.onSurface);
@@ -104,14 +142,26 @@
     expect(scheme.onPrimary, const Color(0xffffffff));
     expect(scheme.primaryContainer, scheme.primary);
     expect(scheme.onPrimaryContainer, scheme.onPrimary);
+    expect(scheme.primaryFixed, scheme.primary);
+    expect(scheme.primaryFixedDim, scheme.primary);
+    expect(scheme.onPrimaryFixed, scheme.onPrimary);
+    expect(scheme.onPrimaryFixedVariant, scheme.onPrimary);
     expect(scheme.secondary, const Color(0xff66fff9));
     expect(scheme.onSecondary, const Color(0xff000000));
     expect(scheme.secondaryContainer, scheme.secondary);
     expect(scheme.onSecondaryContainer, scheme.onSecondary);
+    expect(scheme.secondaryFixed, scheme.secondary);
+    expect(scheme.secondaryFixedDim, scheme.secondary);
+    expect(scheme.onSecondaryFixed, scheme.onSecondary);
+    expect(scheme.onSecondaryFixedVariant, scheme.onSecondary);
     expect(scheme.tertiary, scheme.secondary);
     expect(scheme.onTertiary, scheme.onSecondary);
     expect(scheme.tertiaryContainer, scheme.tertiary);
     expect(scheme.onTertiaryContainer, scheme.onTertiary);
+    expect(scheme.tertiaryFixed, scheme.tertiary);
+    expect(scheme.tertiaryFixedDim, scheme.tertiary);
+    expect(scheme.onTertiaryFixed, scheme.onTertiary);
+    expect(scheme.onTertiaryFixedVariant, scheme.onTertiary);
     expect(scheme.error, const Color(0xff790000));
     expect(scheme.onError, const Color(0xffffffff));
     expect(scheme.errorContainer, scheme.error);
@@ -119,6 +169,13 @@
     expect(scheme.background, const Color(0xffffffff));
     expect(scheme.onBackground, const Color(0xff000000));
     expect(scheme.surface, const Color(0xffffffff));
+    expect(scheme.surfaceBright, scheme.surface);
+    expect(scheme.surfaceDim, scheme.surface);
+    expect(scheme.surfaceContainerLowest, scheme.surface);
+    expect(scheme.surfaceContainerLow, scheme.surface);
+    expect(scheme.surfaceContainer, scheme.surface);
+    expect(scheme.surfaceContainerHigh, scheme.surface);
+    expect(scheme.surfaceContainerHighest, scheme.surface);
     expect(scheme.onSurface, const Color(0xff000000));
     expect(scheme.surfaceVariant, scheme.surface);
     expect(scheme.onSurfaceVariant, scheme.onSurface);
@@ -143,14 +200,26 @@
     expect(scheme.onPrimary, const Color(0xff000000));
     expect(scheme.primaryContainer, scheme.primary);
     expect(scheme.onPrimaryContainer, scheme.onPrimary);
+    expect(scheme.primaryFixed, scheme.primary);
+    expect(scheme.primaryFixedDim, scheme.primary);
+    expect(scheme.onPrimaryFixed, scheme.onPrimary);
+    expect(scheme.onPrimaryFixedVariant, scheme.onPrimary);
     expect(scheme.secondary, const Color(0xff66fff9));
     expect(scheme.onSecondary, const Color(0xff000000));
     expect(scheme.secondaryContainer, scheme.secondary);
     expect(scheme.onSecondaryContainer, scheme.onSecondary);
+    expect(scheme.secondaryFixed, scheme.secondary);
+    expect(scheme.secondaryFixedDim, scheme.secondary);
+    expect(scheme.onSecondaryFixed, scheme.onSecondary);
+    expect(scheme.onSecondaryFixedVariant, scheme.onSecondary);
     expect(scheme.tertiary, scheme.secondary);
     expect(scheme.onTertiary, scheme.onSecondary);
     expect(scheme.tertiaryContainer, scheme.tertiary);
     expect(scheme.onTertiaryContainer, scheme.onTertiary);
+    expect(scheme.tertiaryFixed, scheme.tertiary);
+    expect(scheme.tertiaryFixedDim, scheme.tertiary);
+    expect(scheme.onTertiaryFixed, scheme.onTertiary);
+    expect(scheme.onTertiaryFixedVariant, scheme.onTertiary);
     expect(scheme.error, const Color(0xff9b374d));
     expect(scheme.onError, const Color(0xff000000));
     expect(scheme.errorContainer, scheme.error);
@@ -158,6 +227,13 @@
     expect(scheme.background, const Color(0xff121212));
     expect(scheme.onBackground, const Color(0xffffffff));
     expect(scheme.surface, const Color(0xff121212));
+    expect(scheme.surfaceBright, scheme.surface);
+    expect(scheme.surfaceDim, scheme.surface);
+    expect(scheme.surfaceContainerLowest, scheme.surface);
+    expect(scheme.surfaceContainerLow, scheme.surface);
+    expect(scheme.surfaceContainer, scheme.surface);
+    expect(scheme.surfaceContainerHigh, scheme.surface);
+    expect(scheme.surfaceContainerHighest, scheme.surface);
     expect(scheme.onSurface, const Color(0xffffffff));
     expect(scheme.surfaceVariant, scheme.surface);
     expect(scheme.onSurfaceVariant, scheme.onSurface);
@@ -208,37 +284,37 @@
 
   test('copyWith overrides given colors', () {
     final ColorScheme scheme = const ColorScheme.light().copyWith(
-        brightness: Brightness.dark,
-        primary: const Color(0x00000001),
-        onPrimary: const Color(0x00000002),
-        primaryContainer: const Color(0x00000003),
-        onPrimaryContainer: const Color(0x00000004),
-        secondary: const Color(0x00000005),
-        onSecondary: const Color(0x00000006),
-        secondaryContainer: const Color(0x00000007),
-        onSecondaryContainer: const Color(0x00000008),
-        tertiary: const Color(0x00000009),
-        onTertiary: const Color(0x0000000A),
-        tertiaryContainer: const Color(0x0000000B),
-        onTertiaryContainer: const Color(0x0000000C),
-        error: const Color(0x0000000D),
-        onError: const Color(0x0000000E),
-        errorContainer: const Color(0x0000000F),
-        onErrorContainer: const Color(0x00000010),
-        background: const Color(0x00000011),
-        onBackground: const Color(0x00000012),
-        surface: const Color(0x00000013),
-        onSurface: const Color(0x00000014),
-        surfaceVariant: const Color(0x00000015),
-        onSurfaceVariant: const Color(0x00000016),
-        outline: const Color(0x00000017),
-        outlineVariant: const Color(0x00000117),
-        shadow: const Color(0x00000018),
-        scrim: const Color(0x00000118),
-        inverseSurface: const Color(0x00000019),
-        onInverseSurface: const Color(0x0000001A),
-        inversePrimary: const Color(0x0000001B),
-        surfaceTint: const Color(0x0000001C),
+      brightness: Brightness.dark,
+      primary: const Color(0x00000001),
+      onPrimary: const Color(0x00000002),
+      primaryContainer: const Color(0x00000003),
+      onPrimaryContainer: const Color(0x00000004),
+      secondary: const Color(0x00000005),
+      onSecondary: const Color(0x00000006),
+      secondaryContainer: const Color(0x00000007),
+      onSecondaryContainer: const Color(0x00000008),
+      tertiary: const Color(0x00000009),
+      onTertiary: const Color(0x0000000A),
+      tertiaryContainer: const Color(0x0000000B),
+      onTertiaryContainer: const Color(0x0000000C),
+      error: const Color(0x0000000D),
+      onError: const Color(0x0000000E),
+      errorContainer: const Color(0x0000000F),
+      onErrorContainer: const Color(0x00000010),
+      background: const Color(0x00000011),
+      onBackground: const Color(0x00000012),
+      surface: const Color(0x00000013),
+      onSurface: const Color(0x00000014),
+      surfaceVariant: const Color(0x00000015),
+      onSurfaceVariant: const Color(0x00000016),
+      outline: const Color(0x00000017),
+      outlineVariant: const Color(0x00000117),
+      shadow: const Color(0x00000018),
+      scrim: const Color(0x00000118),
+      inverseSurface: const Color(0x00000019),
+      onInverseSurface: const Color(0x0000001A),
+      inversePrimary: const Color(0x0000001B),
+      surfaceTint: const Color(0x0000001C),
     );
 
     expect(scheme.brightness, Brightness.dark);
@@ -350,7 +426,7 @@
     expect(scheme.brightness, baseScheme.brightness);
   });
 
-   test('can generate a light scheme from an imageProvider', () async {
+  test('can generate a light scheme from an imageProvider', () async {
     final Uint8List blueSquareBytes = Uint8List.fromList(kBlueSquarePng);
     final ImageProvider image = MemoryImage(blueSquareBytes);
 
@@ -426,7 +502,7 @@
     expect(scheme.onInverseSurface, const Color(0xff313034));
     expect(scheme.inversePrimary, const Color(0xff4040f3));
     expect(scheme.surfaceTint, const Color(0xffc0c1ff));
-    }, skip: isBrowser, // [intended] uses dart:isolate and io.
+  }, skip: isBrowser, // [intended] uses dart:isolate and io.
   );
 
   test('fromImageProvider() propagates TimeoutException when image cannot be rendered', () async {