Conversation
There was a problem hiding this comment.
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.
| final BuildContext context = tester.element(find.text('Home Route')); | ||
| Navigator.of(context).pushNamed('/about'); |
There was a problem hiding this comment.
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.
| final BuildContext context = tester.element(find.text('Home Route')); | |
| Navigator.of(context).pushNamed('/about'); | |
| tester.state<NavigatorState>(find.byType(Navigator)).pushNamed('/about'); |
There was a problem hiding this comment.
I think this isn't significant.
| final BuildContext context = tester.element(find.text('MaterialApp Theme')); | ||
| final ThemeData theme = Theme.of(context); |
There was a problem hiding this comment.
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.
| 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); |
There was a problem hiding this comment.
I think this isn't significant.
|
|
||
| await tester.sendKeyEvent(LogicalKeyboardKey.select); | ||
| expect(invoked, isTrue); | ||
| }); |
There was a problem hiding this comment.
nit: maybe we can test this against iOS like
| }); | |
| }, 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
There was a problem hiding this comment.
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.
This PR addresses batch 6 of the migration detailed in flutter/flutter#188530 (comment).
app.snippet.4.dartcontains some non-trivial changes to fix a type error and to make it testable.Pre-Review Checklist
[shared_preferences]///).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-assistbot 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
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