Skip to content

[material_ui] Migrate MaterialApp API doc snippets to {@example} and add unit tests (batch 6) - #13021

Merged
auto-submit[bot] merged 6 commits into
flutter:mainfrom
dkwingsmt:snippet_material_app
Oct 1, 2026
Merged

auto-submit[bot] merged 6 commits into
flutter:mainfrom
dkwingsmt:snippet_material_app

Conversation

@dkwingsmt

@dkwingsmt dkwingsmt commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

This PR addresses batch 6 of the migration detailed in flutter/flutter#188530 (comment).

app.snippet.4.dart‎ contains some non-trivial changes to fix a type error and to make it testable.

Pre-Review Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2

@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label Sep 25, 2026
@github-actions github-actions Bot added p: material_ui triage-design Should be looked at in design triage labels Sep 25, 2026

@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 refactors the documentation for MaterialApp by replacing inline code snippets with external example files and adds the corresponding example and test files. Feedback was provided to improve test robustness by using more stable widget finders instead of relying on specific text content.

Comment on lines +18 to +19
final BuildContext context = tester.element(find.text('Home Route'));
Navigator.of(context).pushNamed('/about');

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

Using tester.element(find.text('Home Route')) to obtain a BuildContext for navigation makes the test fragile, as it relies on the specific text content of the UI. A more robust and idiomatic approach in Flutter widget tests is to access the NavigatorState directly using tester.state.

Suggested change
final BuildContext context = tester.element(find.text('Home Route'));
Navigator.of(context).pushNamed('/about');
tester.state<NavigatorState>(find.byType(Navigator)).pushNamed('/about');

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I think this isn't significant.

Comment on lines +17 to +18
final BuildContext context = tester.element(find.text('MaterialApp Theme'));
final ThemeData theme = Theme.of(context);

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

Obtaining the BuildContext from a specific text widget makes the test fragile if the text content changes. It is more robust to obtain the context from a structural widget like Scaffold.

Suggested change
final BuildContext context = tester.element(find.text('MaterialApp Theme'));
final ThemeData theme = Theme.of(context);
final BuildContext context = tester.element(find.byType(Scaffold));
final ThemeData theme = Theme.of(context);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I think this isn't significant.

@dkwingsmt dkwingsmt 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 labels Sep 25, 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.

LGTM!


await tester.sendKeyEvent(LogicalKeyboardKey.select);
expect(invoked, isTrue);
});

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.

nit: maybe we can test this against iOS like

Suggested change
});
}, variant: TargetPlatformVariant.only(TargetPlatform.iOS));

This test still passes if the snippet's one extra shortcut, const SingleActivator(LogicalKeyboardKey.select): const ActivateIntent(), is removed because the same entry is already in WidgetsApp.defaultShortcuts on Android

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Really good point! I've changed the activating key from Select to keyE, which should be more useful as an example than having the platform set to iOS.

@dkwingsmt dkwingsmt added the autosubmit Merge PR when tree becomes green via auto submit App label Oct 1, 2026
@auto-submit
auto-submit Bot merged commit 029be53 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
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.

3 participants