Skip to content

[material_ui] Migrate M3 snackbar defaults to new gen_defaults - #13009

Merged
auto-submit[bot] merged 2 commits into
flutter:mainfrom
fkrhzbllh:migrate-snackbar
Oct 1, 2026
Merged

auto-submit[bot] merged 2 commits into
flutter:mainfrom
fkrhzbllh:migrate-snackbar

Conversation

@fkrhzbllh

@fkrhzbllh fkrhzbllh commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Work toward flutter/flutter#187899

Fixes flutter/flutter#188434

Pre-Review Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools.
  • I read the [Tree Hygiene] page, which explains my responsibilities.
  • I read and followed the [relevant style guides] and ran [the auto-formatter].
  • I signed the [CLA].
  • The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
  • 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].
  • I [linked to at least one issue that this PR fixes] in the description above.
  • 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].
  • All existing and new tests are passing.

@github-actions github-actions Bot added p: material_ui triage-design Should be looked at in design triage labels Sep 25, 2026
@fkrhzbllh
fkrhzbllh marked this pull request as ready for review September 25, 2026 09:13

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request migrates the Material 3 Snackbar defaults generation to the new token-based template system. It removes the inline _SnackbarDefaultsM3 class from snack_bar.dart and generates it into a separate part file using the newly added SnackbarTemplateM3. Additionally, tests are added to verify the generated defaults. Feedback is provided to address formatting and style inconsistencies within the template string of SnackbarTemplateM3 to ensure better maintainability.

Comment on lines +21 to +56
$className(this.context);

final BuildContext context;
late final ThemeData _theme = Theme.of(context);
late final ColorScheme _colors = _theme.colorScheme;

@override
Color get backgroundColor => ${color(TokenSnackbar.containerColor)};

@override
Color get actionTextColor => WidgetStateColor.resolveWith((Set<WidgetState> states) {
if (states.contains(WidgetState.disabled)) {
return ${color(TokenSnackbar.actionPressedLabelTextColor)};
}
if (states.contains(WidgetState.pressed)) {
return ${color(TokenSnackbar.actionPressedLabelTextColor)};
}
if (states.contains(WidgetState.hovered)) {
return ${color(TokenSnackbar.actionHoverLabelTextColor)};
}
if (states.contains(WidgetState.focused)) {
return ${color(TokenSnackbar.actionFocusLabelTextColor)};
}
return ${color(TokenSnackbar.actionLabelTextColor)};
});

@override
Color get disabledActionTextColor =>
${color(TokenSnackbar.actionPressedLabelTextColor)};


@override
TextStyle get contentTextStyle =>
${textStyle(TokenSnackbar.supportingTextType, 'Theme.of(context).textTheme')}!.copyWith
(color: ${color(TokenSnackbar.supportingTextColor)},
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The template has several minor formatting and style inconsistencies (such as extra spaces, incorrect indentation of the constructor, and non-standard wrapping of the contentTextStyle copyWith method). Although the auto-formatter cleans up the generated file, keeping the template code clean and properly formatted improves maintainability.

  $className(this.context);

  final BuildContext context;
  late final ThemeData _theme = Theme.of(context);
  late final ColorScheme _colors = _theme.colorScheme;

  @override
  Color get backgroundColor => ${color(TokenSnackbar.containerColor)};

  @override
  Color get actionTextColor => WidgetStateColor.resolveWith((Set<WidgetState> states) {
    if (states.contains(WidgetState.disabled)) {
      return ${color(TokenSnackbar.actionPressedLabelTextColor)};
    }
    if (states.contains(WidgetState.pressed)) {
      return ${color(TokenSnackbar.actionPressedLabelTextColor)};
    }
    if (states.contains(WidgetState.hovered)) {
      return ${color(TokenSnackbar.actionHoverLabelTextColor)};
    }
    if (states.contains(WidgetState.focused)) {
      return ${color(TokenSnackbar.actionFocusLabelTextColor)};
    }
    return ${color(TokenSnackbar.actionLabelTextColor)};
  });

  @override
  Color get disabledActionTextColor => ${color(TokenSnackbar.actionPressedLabelTextColor)};

  @override
  TextStyle get contentTextStyle =>
      ${textStyle(TokenSnackbar.supportingTextType, 'Theme.of(context).textTheme')}!.copyWith(
        color: ${color(TokenSnackbar.supportingTextColor)},
      );
References
  1. Code should follow the relevant style guides, and use the correct auto-formatter, for each language, as described in the repository contributing guide's Style section. (link)

@QuncCccccc QuncCccccc added override: no versioning needed Override the check requiring version bumps for most changes override: no changelog needed Override the check requiring CHANGELOG updates for most changes CICD Run CI/CD labels Sep 29, 2026

@QuncCccccc QuncCccccc left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NICE! Thanks a lot for helping with the migration!

LGTM.

@elliette elliette left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@elliette elliette added the autosubmit Merge PR when tree becomes green via auto submit App label Oct 1, 2026
@auto-submit
auto-submit Bot merged commit bd7b7b5 into flutter:main Oct 1, 2026
13 checks passed
jesswrd pushed a commit to jesswrd/flutter that referenced this pull request Oct 2, 2026
…er#193711)

flutter/packages@d5ec6db...5620e65

2026-10-02 [email protected] [material_ui]
Migrate M3 Menu template to use new gen_defaults
(flutter/packages#13057)
2026-10-02 [email protected]
[material_ui] Repaint NavigationIndicator when the selection changes
without pointer input (flutter/packages#13010)
2026-10-01 [email protected] [tool] Use flutter pub for packages that
depend on jni (flutter/packages#13087)
2026-10-01 [email protected] [material_ui]
Migrate M3 snackbar defaults to new gen_defaults
(flutter/packages#13009)
2026-10-01 [email protected] Manual roll Flutter (stable)
from 6a19cca to 5fc3468 (6 revisions) (flutter/packages#13105)
2026-10-01 [email protected] Manual roll Flutter from
d649d2b to e89fd0a (27 revisions) (flutter/packages#13104)
2026-10-01 [email protected] [webview_flutter]
Add gesture blocking policy to WebKitWebViewWidgetCreationParams
(flutter/packages#12496)
2026-10-01 [email protected] [material_ui]
Update Material tokens to Material version 38.2.83
(flutter/packages#13082)
2026-10-01 [email protected] [material_ui] Migrate
MaterialApp API doc snippets to {@example} and add unit tests (batch 6)
(flutter/packages#13021)
2026-10-01 [email protected] [material_ui] Migrate
AppBar, SliverAppBar, BottomAppBar, and Scaffold API doc snippets to
{@example} (batch 7) (flutter/packages#13023)
2026-10-01 [email protected] [various] Update Robolectric to 4.17
(flutter/packages#13041)
2026-10-01 [email protected] [pigeon] pin native interop related dev
deps and update some docs (flutter/packages#13103)
2026-10-01 [email protected] [tool] Add more documentation
(flutter/packages#13063)

If this roll has caused a breakage, revert this CL and set the roller
to dry run mode using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected] on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
@fkrhzbllh
fkrhzbllh deleted the migrate-snackbar branch October 7, 2026 03:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD override: no changelog needed Override the check requiring CHANGELOG updates for most changes override: no versioning needed Override the check requiring version bumps for most changes p: material_ui triage-design Should be looked at in design triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

snackbar_template.dart

3 participants