From f45deca8ba2ca1622f15c7aef6964fb121a2035c Mon Sep 17 00:00:00 2001 From: Kate Lovett Date: Fri, 26 Sep 2025 13:34:37 -0700 Subject: [PATCH] Removes type annotations in templates (#176106) Fixes https://github.com/flutter/flutter/issues/176098, [aligning with Effective Dart](https://dart.dev/effective-dart/design#dont-write-type-arguments-on-generic-invocations-that-are-inferred). ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [ ] I updated/added relevant documentation (doc comments with `///`). - [ ] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. 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](https://developers.google.com/gemini-code-assist/docs/review-github-code). 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. [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md --- .../flutter_tools/templates/app/lib/main.dart.tmpl | 2 +- .../templates/module/common/lib/main.dart.tmpl | 2 +- .../lib/src/controls.dart.tmpl | 2 +- .../lib/src/widget_preview_rendering.dart.tmpl | 12 ++++++------ .../widget_preview_scaffold/lib/src/controls.dart | 2 +- .../lib/src/widget_preview_rendering.dart | 12 ++++++------ .../test/template_change_detection_smoke_test.dart | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/flutter_tools/templates/app/lib/main.dart.tmpl b/packages/flutter_tools/templates/app/lib/main.dart.tmpl index 6048c886753..24aa6560aca 100644 --- a/packages/flutter_tools/templates/app/lib/main.dart.tmpl +++ b/packages/flutter_tools/templates/app/lib/main.dart.tmpl @@ -137,7 +137,7 @@ class _MyHomePageState extends State { // action in the IDE, or press "p" in the console), to see the // wireframe for each widget. mainAxisAlignment: .center, - children: [ + children: [ const Text('You have pushed the button this many times:'), Text( '$_counter', diff --git a/packages/flutter_tools/templates/module/common/lib/main.dart.tmpl b/packages/flutter_tools/templates/module/common/lib/main.dart.tmpl index 14d21ea2751..f1c73013515 100644 --- a/packages/flutter_tools/templates/module/common/lib/main.dart.tmpl +++ b/packages/flutter_tools/templates/module/common/lib/main.dart.tmpl @@ -98,7 +98,7 @@ class _MyHomePageState extends State { // axis because Columns are vertical (the cross axis would be // horizontal). mainAxisAlignment: .center, - children: [ + children: [ const Text('You have pushed the button this many times:'), Text( '$_counter', diff --git a/packages/flutter_tools/templates/widget_preview_scaffold/lib/src/controls.dart.tmpl b/packages/flutter_tools/templates/widget_preview_scaffold/lib/src/controls.dart.tmpl index bf9d52e63f3..ab68ec6e269 100644 --- a/packages/flutter_tools/templates/widget_preview_scaffold/lib/src/controls.dart.tmpl +++ b/packages/flutter_tools/templates/widget_preview_scaffold/lib/src/controls.dart.tmpl @@ -50,7 +50,7 @@ class ZoomControls extends StatelessWidget { Widget build(BuildContext context) { return Row( mainAxisSize: MainAxisSize.min, - children: [ + children: [ _WidgetPreviewIconButton( tooltip: 'Zoom in', onPressed: enabled ? _zoomIn : null, diff --git a/packages/flutter_tools/templates/widget_preview_scaffold/lib/src/widget_preview_rendering.dart.tmpl b/packages/flutter_tools/templates/widget_preview_scaffold/lib/src/widget_preview_rendering.dart.tmpl index 77255dad393..85e64574c07 100644 --- a/packages/flutter_tools/templates/widget_preview_scaffold/lib/src/widget_preview_rendering.dart.tmpl +++ b/packages/flutter_tools/templates/widget_preview_scaffold/lib/src/widget_preview_rendering.dart.tmpl @@ -55,10 +55,10 @@ class _WidgetPreviewErrorWidget extends StatelessWidget { child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ Text.rich( TextSpan( - children: [ + children: [ TextSpan( text: 'Failed to initialize widget tree: ', style: boldStyle, @@ -90,7 +90,7 @@ class _WidgetPreviewErrorWidget extends StatelessWidget { return frames.map((frame) { if (frame is UnparsedFrame) return TextSpan(text: '$frame\n'); return TextSpan( - children: [ + children: [ TextSpan( text: frame.location, style: linkTextStyle, @@ -122,7 +122,7 @@ class NoPreviewsDetectedWidget extends StatelessWidget { final style = fixBlurryText(TextStyle(color: Colors.black)); return Center( child: Column( - children: [ + children: [ Text( 'No previews detected', style: style.copyWith(fontWeight: FontWeight.bold), @@ -196,7 +196,7 @@ class WidgetPreviewGroupWidget extends StatelessWidget { spacing: WidgetPreviewGroupWidget._gridSpacing, runSpacing: WidgetPreviewGroupWidget._gridRunSpacing, alignment: WrapAlignment.start, - children: [ + children: [ for (final WidgetPreview preview in previews) WidgetPreviewWidget(preview: preview), ], @@ -963,7 +963,7 @@ class WidgetPreviews extends StatelessWidget { if (previewGroups.isEmpty) { return Column( mainAxisAlignment: MainAxisAlignment.center, - children: [NoPreviewsDetectedWidget()], + children: [NoPreviewsDetectedWidget()], ); } return LayoutBuilder( diff --git a/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/lib/src/controls.dart b/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/lib/src/controls.dart index bf9d52e63f3..ab68ec6e269 100644 --- a/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/lib/src/controls.dart +++ b/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/lib/src/controls.dart @@ -50,7 +50,7 @@ class ZoomControls extends StatelessWidget { Widget build(BuildContext context) { return Row( mainAxisSize: MainAxisSize.min, - children: [ + children: [ _WidgetPreviewIconButton( tooltip: 'Zoom in', onPressed: enabled ? _zoomIn : null, diff --git a/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/lib/src/widget_preview_rendering.dart b/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/lib/src/widget_preview_rendering.dart index 77255dad393..85e64574c07 100644 --- a/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/lib/src/widget_preview_rendering.dart +++ b/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/lib/src/widget_preview_rendering.dart @@ -55,10 +55,10 @@ class _WidgetPreviewErrorWidget extends StatelessWidget { child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ Text.rich( TextSpan( - children: [ + children: [ TextSpan( text: 'Failed to initialize widget tree: ', style: boldStyle, @@ -90,7 +90,7 @@ class _WidgetPreviewErrorWidget extends StatelessWidget { return frames.map((frame) { if (frame is UnparsedFrame) return TextSpan(text: '$frame\n'); return TextSpan( - children: [ + children: [ TextSpan( text: frame.location, style: linkTextStyle, @@ -122,7 +122,7 @@ class NoPreviewsDetectedWidget extends StatelessWidget { final style = fixBlurryText(TextStyle(color: Colors.black)); return Center( child: Column( - children: [ + children: [ Text( 'No previews detected', style: style.copyWith(fontWeight: FontWeight.bold), @@ -196,7 +196,7 @@ class WidgetPreviewGroupWidget extends StatelessWidget { spacing: WidgetPreviewGroupWidget._gridSpacing, runSpacing: WidgetPreviewGroupWidget._gridRunSpacing, alignment: WrapAlignment.start, - children: [ + children: [ for (final WidgetPreview preview in previews) WidgetPreviewWidget(preview: preview), ], @@ -963,7 +963,7 @@ class WidgetPreviews extends StatelessWidget { if (previewGroups.isEmpty) { return Column( mainAxisAlignment: MainAxisAlignment.center, - children: [NoPreviewsDetectedWidget()], + children: [NoPreviewsDetectedWidget()], ); } return LayoutBuilder( diff --git a/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/test/template_change_detection_smoke_test.dart b/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/test/template_change_detection_smoke_test.dart index debfda2bcc0..e9e3beb5a74 100644 --- a/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/test/template_change_detection_smoke_test.dart +++ b/packages/flutter_tools/test/widget_preview_scaffold.shard/widget_preview_scaffold/test/template_change_detection_smoke_test.dart @@ -20,7 +20,7 @@ void main() { )) { stdout.writeln( 'The widget_preview_scaffold contents do not match the widget_preview_scaffold ' - 'templates. Run "dart test/widget_preview_scaffold.shard/update_widget_preview_scaffold" ' + 'templates. Run "dart test/widget_preview_scaffold.shard/update_widget_preview_scaffold.dart" ' 'to update widget_preview_scaffold with the latest template contents.', ); fail(