From ae130057da67d5392678950b167dbf7258a9a6c0 Mon Sep 17 00:00:00 2001 From: Qun Cheng Date: Thu, 16 Jul 2026 13:56:45 -0700 Subject: [PATCH 1/2] Move template/generated code out of temporarily_excluded directory --- .../src/generated/badge_defaults_m3.g.dart} | 0 .../{temporarily_excluded => }/templates/badge_template.dart | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename packages/material_ui/{tool/gen_defaults/temporarily_excluded/generated/badge_defaults.g.dart => lib/src/generated/badge_defaults_m3.g.dart} (100%) rename packages/material_ui/tool/gen_defaults/{temporarily_excluded => }/templates/badge_template.dart (100%) diff --git a/packages/material_ui/tool/gen_defaults/temporarily_excluded/generated/badge_defaults.g.dart b/packages/material_ui/lib/src/generated/badge_defaults_m3.g.dart similarity index 100% rename from packages/material_ui/tool/gen_defaults/temporarily_excluded/generated/badge_defaults.g.dart rename to packages/material_ui/lib/src/generated/badge_defaults_m3.g.dart diff --git a/packages/material_ui/tool/gen_defaults/temporarily_excluded/templates/badge_template.dart b/packages/material_ui/tool/gen_defaults/templates/badge_template.dart similarity index 100% rename from packages/material_ui/tool/gen_defaults/temporarily_excluded/templates/badge_template.dart rename to packages/material_ui/tool/gen_defaults/templates/badge_template.dart From 1cd49adac14ede77d02e715e4ac839ba921bfb77 Mon Sep 17 00:00:00 2001 From: Qun Cheng Date: Thu, 16 Jul 2026 13:57:22 -0700 Subject: [PATCH 2/2] [material_ui] Migrate Badge defaults to gen_defaults --- packages/material_ui/lib/src/badge.dart | 35 ++----------------- .../src/generated/badge_defaults_m3.g.dart | 5 +++ .../tool/gen_defaults/bin/gen_defaults.dart | 5 +-- .../templates/badge_template.dart | 33 +++++++++-------- .../gen_defaults/test/gen_defaults_test.dart | 17 +++++++-- 5 files changed, 42 insertions(+), 53 deletions(-) diff --git a/packages/material_ui/lib/src/badge.dart b/packages/material_ui/lib/src/badge.dart index cda14987c03a..5c145e58eae7 100644 --- a/packages/material_ui/lib/src/badge.dart +++ b/packages/material_ui/lib/src/badge.dart @@ -17,6 +17,8 @@ import 'badge_theme.dart'; import 'color_scheme.dart'; import 'theme.dart'; +part 'generated/badge_defaults_m3.g.dart'; + /// A Material Design "badge". /// /// A badge's [label] conveys a small amount of information about its @@ -476,36 +478,3 @@ class _RenderIntrinsicHorizontalStadium extends RenderProxyBox { size = _computeSize(layoutChild: ChildLayoutHelper.layoutChild, constraints: constraints); } } - -// BEGIN GENERATED TOKEN PROPERTIES - Badge - -// 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 _BadgeDefaultsM3 extends BadgeThemeData { - _BadgeDefaultsM3(this.context) : super( - smallSize: 6.0, - largeSize: 16.0, - padding: const EdgeInsets.symmetric(horizontal: 4), - alignment: AlignmentDirectional.topEnd, - ); - - final BuildContext context; - late final ThemeData _theme = Theme.of(context); - late final ColorScheme _colors = _theme.colorScheme; - - @override - Color? get backgroundColor => _colors.error; - - @override - Color? get textColor => _colors.onError; - - @override - TextStyle? get textStyle => Theme.of(context).textTheme.labelSmall; -} -// dart format on - -// END GENERATED TOKEN PROPERTIES - Badge diff --git a/packages/material_ui/lib/src/generated/badge_defaults_m3.g.dart b/packages/material_ui/lib/src/generated/badge_defaults_m3.g.dart index 8009bf8f6bb0..27036294bbe8 100644 --- a/packages/material_ui/lib/src/generated/badge_defaults_m3.g.dart +++ b/packages/material_ui/lib/src/generated/badge_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 '../badge.dart'; + class _BadgeDefaultsM3 extends BadgeThemeData { _BadgeDefaultsM3(this.context) : super( 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 c7ab01c7e138..da0e3b28290e 100644 --- a/packages/material_ui/tool/gen_defaults/bin/gen_defaults.dart +++ b/packages/material_ui/tool/gen_defaults/bin/gen_defaults.dart @@ -14,7 +14,8 @@ import 'package:args/args.dart'; // import '../templates/action_chip_template.dart'; import '../templates/app_bar_template.dart'; -// import '../templates/badge_template.dart'; +import '../templates/badge_template.dart'; + // import '../templates/banner_template.dart'; // import '../templates/bottom_app_bar_template.dart'; // import '../templates/bottom_sheet_template.dart'; @@ -65,7 +66,7 @@ Future main(List args) async { // const ActionChipTemplateM3().generateFile(verbose: verbose); const AppBarTemplateM3().generateFile(verbose: verbose); - // const BadgeTemplateM3().generateFile(verbose: verbose); + const BadgeTemplateM3().generateFile(verbose: verbose); // const BannerTemplateM3().generateFile(verbose: verbose); // const BottomAppBarTemplateM3().generateFile(verbose: verbose); // const BottomSheetTemplateM3().generateFile(verbose: verbose); diff --git a/packages/material_ui/tool/gen_defaults/templates/badge_template.dart b/packages/material_ui/tool/gen_defaults/templates/badge_template.dart index 6b2ecb68d417..d89bc59512bc 100644 --- a/packages/material_ui/tool/gen_defaults/templates/badge_template.dart +++ b/packages/material_ui/tool/gen_defaults/templates/badge_template.dart @@ -2,22 +2,25 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import '../data/badge.dart'; import 'template.dart'; -class BadgeTemplate extends TokenTemplate { - const BadgeTemplate( - super.blockName, - super.fileName, - super.tokens, { - super.colorSchemePrefix = '_colors.', - }); +class BadgeTemplateM3 extends TokenTemplateM3 { + const BadgeTemplateM3(); @override - String generate() => ''' -class _${blockName}DefaultsM3 extends BadgeThemeData { - _${blockName}DefaultsM3(this.context) : super( - smallSize: ${getToken("md.comp.badge.size")}, - largeSize: ${getToken("md.comp.badge.large.size")}, + String get name => 'Badge'; + + @override + String get parentFilePath => 'badge.dart'; + + @override + String generateContents(String className) => + ''' +class $className extends BadgeThemeData { + $className(this.context) : super( + smallSize: ${number(TokenBadge.size)}, + largeSize: ${number(TokenBadge.largeSize)}, padding: const EdgeInsets.symmetric(horizontal: 4), alignment: AlignmentDirectional.topEnd, ); @@ -27,13 +30,13 @@ class _${blockName}DefaultsM3 extends BadgeThemeData { late final ColorScheme _colors = _theme.colorScheme; @override - Color? get backgroundColor => ${color("md.comp.badge.color")}; + Color? get backgroundColor => ${color(TokenBadge.color, '_colors')}; @override - Color? get textColor => ${color("md.comp.badge.large.label-text.color")}; + Color? get textColor => ${color(TokenBadge.largeLabelTextColor, '_colors')}; @override - TextStyle? get textStyle => ${textStyle("md.comp.badge.large.label-text")}; + TextStyle? get textStyle => Theme.of(context).textTheme.labelSmall; } '''; } 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 02f8d08fafca..9fdd45571f0b 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/badge_template.dart'; import '../templates/template.dart'; import 'test_fixtures/test_templates.dart'; @@ -165,9 +166,19 @@ void main() { expect(contents, contains('static const double expandedHeight = 152.0')); }); - test('BadgeTemplateM3 emits M3 Badge defaults from tokens', () { - // Intentionally empty, will be implemented during migration. See: - // https://github.com/flutter/flutter/issues/187899 + test('BadgeTemplateM3 emits M3 Badge defaults from badge tokens', () { + final String contents = const BadgeTemplateM3().generateContents('_BadgeDefaultsM3'); + expect(contents, contains('class _BadgeDefaultsM3 extends BadgeThemeData')); + expect(contents, contains('smallSize: 6.0')); + expect(contents, contains('largeSize: 16.0')); + expect(contents, contains('padding: const EdgeInsets.symmetric(horizontal: 4)')); + expect(contents, contains('alignment: AlignmentDirectional.topEnd')); + expect(contents, contains('Color? get backgroundColor => _colors.error')); + expect(contents, contains('Color? get textColor => _colors.onError')); + expect( + contents, + contains('TextStyle? get textStyle => Theme.of(context).textTheme.labelSmall'), + ); }); test('BannerTemplateM3 emits M3 Banner defaults from tokens', () {