[material_ui] Migrate M3 `Banner` template to use new `gen_defaults` (#12227)

Work towards https://github.com/flutter/flutter/issues/187899
Fixes https://github.com/flutter/flutter/issues/188402

## Pre-Review Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [x] I read the [Tree Hygiene] page, which explains my
responsibilities.
- [x] I read and followed the [relevant style guides] and ran [the
auto-formatter].
- [x] I signed the [CLA].
- [x] The title of the PR starts with the name of the package surrounded
by square brackets, e.g. `[shared_preferences]`
- [x] I [linked to at least one issue that this PR fixes] in the
description above.
- [x] I followed [the version and CHANGELOG instructions], using
[semantic versioning] and the [repository CHANGELOG style], or I have
commented below to indicate which documented exception this PR falls
under[^1].
- [x] I updated/added any relevant documentation (doc comments with
`///`).
- [ ] I added new tests to check the change I am making, or I have
commented below to indicate which [test exemption] this PR falls
under[^1].
- [x] All existing and new tests are passing.
diff --git a/packages/material_ui/lib/src/banner.dart b/packages/material_ui/lib/src/banner.dart
index 4823692..5ba0e94 100644
--- a/packages/material_ui/lib/src/banner.dart
+++ b/packages/material_ui/lib/src/banner.dart
@@ -18,6 +18,8 @@
 import 'text_theme.dart';
 import 'theme.dart';
 
+part 'generated/banner_defaults_m3.g.dart';
+
 // Examples can assume:
 // late BuildContext context;
 
@@ -489,35 +491,3 @@
   @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/tool/gen_defaults/temporarily_excluded/generated/banner_defaults.g.dart b/packages/material_ui/lib/src/generated/banner_defaults_m3.g.dart
similarity index 76%
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
index 1cb263c..308539b 100644
--- 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
@@ -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 8281608..07c1ade 100644
--- a/packages/material_ui/tool/gen_defaults/bin/gen_defaults.dart
+++ b/packages/material_ui/tool/gen_defaults/bin/gen_defaults.dart
@@ -14,8 +14,8 @@
 
 import '../templates/action_chip_template.dart';
 import '../templates/app_bar_template.dart';
+import '../templates/banner_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';
 // import '../templates/button_template.dart';
@@ -65,8 +65,8 @@
 
   const ActionChipTemplateM3().generateFile(verbose: verbose);
   const AppBarTemplateM3().generateFile(verbose: verbose);
+  const BannerTemplateM3().generateFile(verbose: verbose);
   const BadgeTemplateM3().generateFile(verbose: verbose);
-  // const BannerTemplateM3().generateFile(verbose: verbose);
   // const BottomAppBarTemplateM3().generateFile(verbose: verbose);
   const BottomSheetTemplateM3().generateFile(verbose: verbose);
   // const ButtonTemplateM3().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
new file mode 100644
index 0000000..ea02333
--- /dev/null
+++ b/packages/material_ui/tool/gen_defaults/templates/banner_template.dart
@@ -0,0 +1,42 @@
+// Copyright 2013 The Flutter Authors
+// 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 BannerTemplateM3 extends TokenTemplateM3 {
+  const BannerTemplateM3();
+
+  @override
+  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 => ${color(TokenBanner.containerColor, '_colors')};
+
+  @override
+  Color? get surfaceTintColor => Colors.transparent;
+
+  @override
+  Color? get dividerColor => ${color(TokenDivider.color, '_colors')};
+
+  @override
+  TextStyle? get contentTextStyle => ${textStyle(TokenBanner.supportingTextType, '_textTheme')};
+}
+''';
+}
diff --git a/packages/material_ui/tool/gen_defaults/temporarily_excluded/templates/banner_template.dart b/packages/material_ui/tool/gen_defaults/temporarily_excluded/templates/banner_template.dart
deleted file mode 100644
index eb9bd75..0000000
--- a/packages/material_ui/tool/gen_defaults/temporarily_excluded/templates/banner_template.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2013 The Flutter Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'template.dart';
-
-class BannerTemplate extends TokenTemplate {
-  const BannerTemplate(
-    super.blockName,
-    super.fileName,
-    super.tokens, {
-    super.colorSchemePrefix = '_colors.',
-    super.textThemePrefix = '_textTheme.',
-  });
-
-  @override
-  String generate() => '''
-class _${blockName}DefaultsM3 extends MaterialBannerThemeData {
-  _${blockName}DefaultsM3(this.context)
-    : super(elevation: ${elevation("md.comp.banner.container")});
-
-  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")};
-
-  @override
-  Color? get surfaceTintColor => ${colorOrTransparent("md.comp.banner.container.surface-tint-layer.color")};
-
-  @override
-  Color? get dividerColor => ${color("md.comp.divider.color")};
-
-  @override
-  TextStyle? get contentTextStyle => ${textStyle("md.comp.banner.supporting-text")};
-}
-''';
-}
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 5603fa5..f5f2536 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
@@ -11,6 +11,7 @@
 import '../data/typescale_emphasized.dart';
 import '../templates/action_chip_template.dart';
 import '../templates/app_bar_template.dart';
+import '../templates/banner_template.dart';
 import '../templates/badge_template.dart';
 import '../templates/bottom_sheet_template.dart';
 import '../templates/template.dart';
@@ -220,9 +221,14 @@
       );
     });
 
-    test('BannerTemplateM3 emits M3 Banner defaults from tokens', () {
-      // Intentionally empty, will be implemented during migration. See:
-      // https://github.com/flutter/flutter/issues/187899
+    test('BannerTemplateM3 emits M3 Banner defaults from banner tokens', () {
+      final String contents = _generateContents(const BannerTemplateM3());
+      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('BottomAppBarTemplateM3 emits M3 BottomAppBar defaults from tokens', () {