From b831ce813317ac8b5e84f4bfccf072813bae2f71 Mon Sep 17 00:00:00 2001 From: Qun Cheng Date: Thu, 16 Jul 2026 14:49:30 -0700 Subject: [PATCH 1/2] Move template/generated code out of temporarily_excluded directory --- .../src/generated/banner_defaults_m3.g.dart} | 0 .../{temporarily_excluded => }/templates/banner_template.dart | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename packages/material_ui/{tool/gen_defaults/temporarily_excluded/generated/banner_defaults.g.dart => lib/src/generated/banner_defaults_m3.g.dart} (100%) rename packages/material_ui/tool/gen_defaults/{temporarily_excluded => }/templates/banner_template.dart (100%) diff --git a/packages/material_ui/tool/gen_defaults/temporarily_excluded/generated/banner_defaults.g.dart b/packages/material_ui/lib/src/generated/banner_defaults_m3.g.dart similarity index 100% rename from packages/material_ui/tool/gen_defaults/temporarily_excluded/generated/banner_defaults.g.dart rename to packages/material_ui/lib/src/generated/banner_defaults_m3.g.dart diff --git a/packages/material_ui/tool/gen_defaults/temporarily_excluded/templates/banner_template.dart b/packages/material_ui/tool/gen_defaults/templates/banner_template.dart similarity index 100% rename from packages/material_ui/tool/gen_defaults/temporarily_excluded/templates/banner_template.dart rename to packages/material_ui/tool/gen_defaults/templates/banner_template.dart From 19aae5cba1086caffa84ad7e5f5a3fd10bd0c03d Mon Sep 17 00:00:00 2001 From: Qun Cheng Date: Thu, 16 Jul 2026 14:50:27 -0700 Subject: [PATCH 2/2] [material_ui] Migrate Banner defaults to gen_defaults --- packages/material_ui/lib/src/banner.dart | 34 ++---------------- .../src/generated/banner_defaults_m3.g.dart | 5 +++ .../tool/gen_defaults/bin/gen_defaults.dart | 2 ++ .../templates/banner_template.dart | 35 ++++++++++--------- .../gen_defaults/test/gen_defaults_test.dart | 12 +++++++ 5 files changed, 40 insertions(+), 48 deletions(-) diff --git a/packages/material_ui/lib/src/banner.dart b/packages/material_ui/lib/src/banner.dart index 482369255ee4..5ba0e947c86c 100644 --- a/packages/material_ui/lib/src/banner.dart +++ b/packages/material_ui/lib/src/banner.dart @@ -18,6 +18,8 @@ import 'scaffold.dart'; import 'text_theme.dart'; import 'theme.dart'; +part 'generated/banner_defaults_m3.g.dart'; + // Examples can assume: // late BuildContext context; @@ -489,35 +491,3 @@ class _BannerDefaultsM2 extends MaterialBannerThemeData { @override TextStyle? get contentTextStyle => _theme.textTheme.bodyMedium; } - -// BEGIN GENERATED TOKEN PROPERTIES - Banner - -// Do not edit by hand. The code between the "BEGIN GENERATED" and -// "END GENERATED" comments are generated from data in the Material -// Design token database by the script: -// dev/tools/gen_defaults/bin/gen_defaults.dart. - -// dart format off -class _BannerDefaultsM3 extends MaterialBannerThemeData { - _BannerDefaultsM3(this.context) - : super(elevation: 1.0); - - final BuildContext context; - late final ColorScheme _colors = Theme.of(context).colorScheme; - late final TextTheme _textTheme = Theme.of(context).textTheme; - - @override - Color? get backgroundColor => _colors.surfaceContainerLow; - - @override - Color? get surfaceTintColor => Colors.transparent; - - @override - Color? get dividerColor => _colors.outlineVariant; - - @override - TextStyle? get contentTextStyle => _textTheme.bodyMedium; -} -// dart format on - -// END GENERATED TOKEN PROPERTIES - Banner diff --git a/packages/material_ui/lib/src/generated/banner_defaults_m3.g.dart b/packages/material_ui/lib/src/generated/banner_defaults_m3.g.dart index 1cb263cabca9..308539b9eb17 100644 --- a/packages/material_ui/lib/src/generated/banner_defaults_m3.g.dart +++ b/packages/material_ui/lib/src/generated/banner_defaults_m3.g.dart @@ -2,6 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// Do not edit by hand. The code is generated from data in the Material +// Design token database by the script: +// packages/material_ui/tool/gen_defaults/bin/gen_defaults.dart. +part of '../banner.dart'; + class _BannerDefaultsM3 extends MaterialBannerThemeData { _BannerDefaultsM3(this.context) : super(elevation: 1.0); diff --git a/packages/material_ui/tool/gen_defaults/bin/gen_defaults.dart b/packages/material_ui/tool/gen_defaults/bin/gen_defaults.dart index bcfe06fba9db..bf3950c3552f 100644 --- a/packages/material_ui/tool/gen_defaults/bin/gen_defaults.dart +++ b/packages/material_ui/tool/gen_defaults/bin/gen_defaults.dart @@ -13,6 +13,7 @@ import 'package:args/args.dart'; import '../templates/app_bar_template.dart'; +import '../templates/banner_template.dart'; Future main(List args) async { // Parse arguments @@ -22,4 +23,5 @@ Future main(List args) async { // TODO(elliette): Add token logger when verbose flag is used. final verbose = argResults['verbose'] as bool; const AppBarTemplateM3().generateFile(verbose: verbose); + const BannerTemplateM3().generateFile(verbose: verbose); } diff --git a/packages/material_ui/tool/gen_defaults/templates/banner_template.dart b/packages/material_ui/tool/gen_defaults/templates/banner_template.dart index eb9bd75af2a7..a9c76919fb65 100644 --- a/packages/material_ui/tool/gen_defaults/templates/banner_template.dart +++ b/packages/material_ui/tool/gen_defaults/templates/banner_template.dart @@ -2,38 +2,41 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import '../data/banner.dart'; +import '../data/divider.dart'; import 'template.dart'; -class BannerTemplate extends TokenTemplate { - const BannerTemplate( - super.blockName, - super.fileName, - super.tokens, { - super.colorSchemePrefix = '_colors.', - super.textThemePrefix = '_textTheme.', - }); +class BannerTemplateM3 extends TokenTemplateM3 { + const BannerTemplateM3(); @override - String generate() => ''' -class _${blockName}DefaultsM3 extends MaterialBannerThemeData { - _${blockName}DefaultsM3(this.context) - : super(elevation: ${elevation("md.comp.banner.container")}); + String get name => 'Banner'; + + @override + String get parentFilePath => 'banner.dart'; + + @override + String generateContents(String className) => + ''' +class $className extends MaterialBannerThemeData { + $className(this.context) + : super(elevation: ${number(TokenBanner.containerElevation)}); final BuildContext context; late final ColorScheme _colors = Theme.of(context).colorScheme; late final TextTheme _textTheme = Theme.of(context).textTheme; @override - Color? get backgroundColor => ${componentColor("md.comp.banner.container")}; + Color? get backgroundColor => ${color(TokenBanner.containerColor, '_colors')}; @override - Color? get surfaceTintColor => ${colorOrTransparent("md.comp.banner.container.surface-tint-layer.color")}; + Color? get surfaceTintColor => Colors.transparent; @override - Color? get dividerColor => ${color("md.comp.divider.color")}; + Color? get dividerColor => ${color(TokenDivider.color, '_colors')}; @override - TextStyle? get contentTextStyle => ${textStyle("md.comp.banner.supporting-text")}; + TextStyle? get contentTextStyle => _textTheme.bodyMedium; } '''; } diff --git a/packages/material_ui/tool/gen_defaults/test/gen_defaults_test.dart b/packages/material_ui/tool/gen_defaults/test/gen_defaults_test.dart index 90063d5cdbe2..953a2eb92bf8 100644 --- a/packages/material_ui/tool/gen_defaults/test/gen_defaults_test.dart +++ b/packages/material_ui/tool/gen_defaults/test/gen_defaults_test.dart @@ -8,6 +8,7 @@ import 'package:test/test.dart'; import '../data/color_role.dart'; import '../data/shape_struct.dart'; import '../templates/app_bar_template.dart'; +import '../templates/banner_template.dart'; import '../templates/template.dart'; import 'test_fixtures/test_templates.dart'; @@ -159,6 +160,17 @@ void main() { expect(contents, contains('static const double expandedHeight = 112.0')); expect(contents, contains('static const double expandedHeight = 152.0')); }); + + test('BannerTemplateM3 emits M3 Banner defaults from banner tokens', () { + final String contents = const BannerTemplateM3().generateContents('_BannerDefaultsM3'); + expect(contents, contains('class _BannerDefaultsM3 extends MaterialBannerThemeData')); + expect(contents, contains('elevation: 1.0')); + expect(contents, contains('Color? get backgroundColor => _colors.surfaceContainerLow')); + expect(contents, contains('Color? get surfaceTintColor => Colors.transparent')); + expect(contents, contains('Color? get dividerColor => _colors.outlineVariant')); + expect(contents, contains('TextStyle? get contentTextStyle => _textTheme.bodyMedium')); + }); + test('will run dart format over the generated file', () { final template = UnformattedTemplate(testPath()); template.generateFile();