enable lints prefer_spread_collections and prefer_inlined_adds (#35189)
diff --git a/analysis_options.yaml b/analysis_options.yaml index 86371c8..84a7d94 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml
@@ -33,11 +33,11 @@ # Please see https://github.com/flutter/flutter/pull/24528 for details. sdk_version_async_exported_from_core: ignore exclude: - - 'bin/cache/**' + - "bin/cache/**" # the following two are relative to the stocks example and the flutter package respectively # see https://github.com/dart-lang/sdk/issues/28463 - - 'lib/i18n/stock_messages_*.dart' - - 'lib/src/http/**' + - "lib/i18n/stock_messages_*.dart" + - "lib/src/http/**" linter: rules: @@ -143,7 +143,7 @@ # - prefer_if_elements_to_conditional_expressions # not yet tested # - prefer_if_null_operators # not yet tested - prefer_initializing_formals - # - prefer_inlined_adds # not yet tested + - prefer_inlined_adds # - prefer_int_literals # not yet tested # - prefer_interpolation_to_compose_strings # not yet tested - prefer_is_empty @@ -152,7 +152,7 @@ # - prefer_mixin # https://github.com/dart-lang/language/issues/32 # - prefer_null_aware_operators # disable until NNBD, see https://github.com/flutter/flutter/pull/32711#issuecomment-492930932 - prefer_single_quotes - # - prefer_spread_collections # not yet tested + - prefer_spread_collections - prefer_typing_uninitialized_variables - prefer_void_to_null # - provide_deprecation_message # not yet tested
diff --git a/dev/benchmarks/macrobenchmarks/lib/src/cubic_bezier.dart b/dev/benchmarks/macrobenchmarks/lib/src/cubic_bezier.dart index 8237d7e..37e88ff 100644 --- a/dev/benchmarks/macrobenchmarks/lib/src/cubic_bezier.dart +++ b/dev/benchmarks/macrobenchmarks/lib/src/cubic_bezier.dart
@@ -117,11 +117,12 @@ AnimationController controller; CurvedAnimation curve; bool isPlaying = false; - List<List<Point>> pointList = <List<Point>>[] - ..add(<Point>[]) - ..add(<Point>[]) - ..add(<Point>[]) - ..add(<Point>[]); + List<List<Point>> pointList = <List<Point>>[ + <Point>[], + <Point>[], + <Point>[], + <Point>[], + ]; bool isReversed = false; List<PathDetail> _playForward() {
diff --git a/dev/bots/analyze-sample-code.dart b/dev/bots/analyze-sample-code.dart index f26fc54..e07905f 100644 --- a/dev/bots/analyze-sample-code.dart +++ b/dev/bots/analyze-sample-code.dart
@@ -286,13 +286,14 @@ '--snapshot=$_snippetsSnapshotPath', '--snapshot-kind=app-jit', path.canonicalize(_snippetsExecutable), - ]..addAll(args), + ...args, + ], workingDirectory: workingDirectory, ); } else { return Process.runSync( _dartExecutable, - <String>[path.canonicalize(_snippetsSnapshotPath)]..addAll(args), + <String>[path.canonicalize(_snippetsSnapshotPath), ...args], workingDirectory: workingDirectory, ); } @@ -311,7 +312,8 @@ final List<String> args = <String>[ '--output=${outputFile.absolute.path}', '--input=${inputFile.absolute.path}', - ]..addAll(snippet.args); + ...snippet.args, + ]; print('Generating snippet for ${snippet.start?.filename}:${snippet.start?.line}'); final ProcessResult process = _runSnippetsScript(args); if (process.exitCode != 0) { @@ -854,9 +856,11 @@ ), ); } - return Section(<Line>[Line(prefix)] - ..addAll(codeLines) - ..add(Line(postfix))); + return Section(<Line>[ + Line(prefix), + ...codeLines, + Line(postfix), + ]); } Line get start => code.firstWhere((Line line) => line.filename != null); final List<Line> code; @@ -868,8 +872,8 @@ /// analyzed. class Snippet { Snippet({this.start, List<String> input, List<String> args, this.serial}) { - this.input = <String>[]..addAll(input); - this.args = <String>[]..addAll(args); + this.input = input.toList(); + this.args = args.toList(); } final Line start; final int serial;
diff --git a/dev/bots/analyze.dart b/dev/bots/analyze.dart index ffa96e2..4397e65 100644 --- a/dev/bots/analyze.dart +++ b/dev/bots/analyze.dart
@@ -260,7 +260,9 @@ Future<void> _runFlutterAnalyze(String workingDirectory, { List<String> options = const <String>[], }) { - return runCommand(flutter, <String>['analyze', '--dartdocs']..addAll(options), + return runCommand( + flutter, + <String>['analyze', '--dartdocs', ...options], workingDirectory: workingDirectory, ); } @@ -456,7 +458,10 @@ final List<T> result = _deepSearch<T>( map, key, - (seen == null ? <T>{start} : Set<T>.from(seen))..add(key), + <T>{ + if (seen == null) start else ...seen, + key, + }, ); if (result != null) { result.insert(0, start);
diff --git a/dev/bots/prepare_package.dart b/dev/bots/prepare_package.dart index cd49939..d36eaf2 100644 --- a/dev/bots/prepare_package.dart +++ b/dev/bots/prepare_package.dart
@@ -381,14 +381,14 @@ Future<String> _runFlutter(List<String> args, {Directory workingDirectory}) { return _processRunner.runProcess( - <String>[_flutter]..addAll(args), + <String>[_flutter, ...args], workingDirectory: workingDirectory ?? flutterRoot, ); } Future<String> _runGit(List<String> args, {Directory workingDirectory}) { return _processRunner.runProcess( - <String>['git']..addAll(args), + <String>['git', ...args], workingDirectory: workingDirectory ?? flutterRoot, ); } @@ -574,14 +574,14 @@ }) async { if (platform.isWindows) { return _processRunner.runProcess( - <String>['python', path.join(platform.environment['DEPOT_TOOLS'], 'gsutil.py'), '--']..addAll(args), + <String>['python', path.join(platform.environment['DEPOT_TOOLS'], 'gsutil.py'), '--', ...args], workingDirectory: workingDirectory, failOk: failOk, ); } return _processRunner.runProcess( - <String>['gsutil.py', '--']..addAll(args), + <String>['gsutil.py', '--', ...args], workingDirectory: workingDirectory, failOk: failOk, );
diff --git a/dev/bots/pubspec.yaml b/dev/bots/pubspec.yaml index 21dacf8..865e3ff 100644 --- a/dev/bots/pubspec.yaml +++ b/dev/bots/pubspec.yaml
@@ -3,7 +3,7 @@ environment: # The pub client defaults to an <2.0.0 sdk constraint which we need to explicitly overwrite. - sdk: ">=2.2.0 <3.0.0" + sdk: ">=2.2.2 <3.0.0" dependencies: path: 1.6.2
diff --git a/dev/bots/test.dart b/dev/bots/test.dart index 8efc6ca..e164800 100644 --- a/dev/bots/test.dart +++ b/dev/bots/test.dart
@@ -220,7 +220,7 @@ final List<String> testGroup = tests[i]; await runCommand( dart, - <String>[path.join('tool', 'tool_coverage.dart'), '--']..addAll(testGroup), + <String>[path.join('tool', 'tool_coverage.dart'), '--', ...testGroup], workingDirectory: toolRoot, environment: <String, String>{ 'FLUTTER_ROOT': flutterRoot, @@ -791,7 +791,7 @@ Map<String, String> environment, List<String> tests = const <String>[], }) async { - final List<String> args = <String>['test']..addAll(options); + final List<String> args = <String>['test', ...options]; if (flutterTestArgs != null && flutterTestArgs.isNotEmpty) args.addAll(flutterTestArgs);
diff --git a/dev/bots/test/fake_process_manager.dart b/dev/bots/test/fake_process_manager.dart index 6a4136c..29f3cda 100644 --- a/dev/bots/test/fake_process_manager.dart +++ b/dev/bots/test/fake_process_manager.dart
@@ -35,8 +35,7 @@ set fakeResults(Map<String, List<ProcessResult>> value) { _fakeResults = <String, List<ProcessResult>>{}; for (String key in value.keys) { - _fakeResults[key] = <ProcessResult>[] - ..addAll(value[key] ?? <ProcessResult>[ProcessResult(0, 0, '', '')]); + _fakeResults[key] = (value[key] ?? <ProcessResult>[ProcessResult(0, 0, '', '')]).toList(); } }
diff --git a/dev/bots/unpublish_package.dart b/dev/bots/unpublish_package.dart index cd09719..a91ce39 100644 --- a/dev/bots/unpublish_package.dart +++ b/dev/bots/unpublish_package.dart
@@ -334,7 +334,7 @@ bool failOk = false, bool confirm = false, }) async { - final List<String> command = <String>['gsutil', '--']..addAll(args); + final List<String> command = <String>['gsutil', '--', ...args]; if (confirm) { return _processRunner.runProcess( command, @@ -358,7 +358,7 @@ print(' $file'); } } - await _runGsUtil(<String>['rm']..addAll(files), failOk: true, confirm: confirmed); + await _runGsUtil(<String>['rm', ...files], failOk: true, confirm: confirmed); } Future<String> _cloudReplaceDest(String src, String dest) async {
diff --git a/dev/devicelab/bin/tasks/build_mode_test.dart b/dev/devicelab/bin/tasks/build_mode_test.dart index c152afb..b6a0dfc 100644 --- a/dev/devicelab/bin/tasks/build_mode_test.dart +++ b/dev/devicelab/bin/tasks/build_mode_test.dart
@@ -17,7 +17,7 @@ print('run: starting...'); final Process run = await startProcess( path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>['run', '--suppress-analytics']..addAll(args), + <String>['run', '--suppress-analytics', ...args], isBot: false, // we just want to test the output, not have any debugging info ); final List<String> stdout = <String>[]; @@ -61,8 +61,13 @@ Future<void> checkMode(String mode, {bool releaseExpected = false, bool dynamic = false}) async { await inDirectory(appDir, () async { print('run: starting $mode test...'); - final List<String> args = <String>['--$mode']..addAll(dynamic ? <String>['--dynamic'] : const <String>[]); - args.addAll(<String>['-d', device.deviceId, 'lib/build_mode.dart']); + final List<String> args = <String>[ + '--$mode', + if (dynamic) '--dynamic', + '-d', + device.deviceId, + 'lib/build_mode.dart', + ]; final String stdout = await runFlutterAndQuit(args, device); if (!stdout.contains('>>> Release: $releaseExpected <<<')) { throw "flutter run --$mode ${dynamic ? '--dynamic ' : ''}didn't set kReleaseMode properly";
diff --git a/dev/devicelab/bin/tasks/flutter_run_test.dart b/dev/devicelab/bin/tasks/flutter_run_test.dart index 940e05b..6106fde 100644 --- a/dev/devicelab/bin/tasks/flutter_run_test.dart +++ b/dev/devicelab/bin/tasks/flutter_run_test.dart
@@ -40,7 +40,7 @@ await inDirectory<void>(flutterGalleryDir, () async { startProcess( path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>['run']..addAll(options), + <String>['run', ...options], environment: null, ); final Completer<void> finished = Completer<void>();
diff --git a/dev/devicelab/bin/tasks/uncaught_image_error_linux.dart b/dev/devicelab/bin/tasks/uncaught_image_error_linux.dart index 6b9567f..04ca28c 100644 --- a/dev/devicelab/bin/tasks/uncaught_image_error_linux.dart +++ b/dev/devicelab/bin/tasks/uncaught_image_error_linux.dart
@@ -29,8 +29,9 @@ deviceId, ]; final Process process = await startProcess( - path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>['run']..addAll(options)); + path.join(flutterDirectory.path, 'bin', 'flutter'), + <String>['run', ...options], + ); final Stream<String> lines = process.stdout .transform(utf8.decoder)
diff --git a/dev/devicelab/lib/framework/adb.dart b/dev/devicelab/lib/framework/adb.dart index 9e4b8f0..e6765c6 100644 --- a/dev/devicelab/lib/framework/adb.dart +++ b/dev/devicelab/lib/framework/adb.dart
@@ -262,17 +262,17 @@ /// Executes [command] on `adb shell` and returns its exit code. Future<void> shellExec(String command, List<String> arguments, { Map<String, String> environment }) async { - await adb(<String>['shell', command]..addAll(arguments), environment: environment); + await adb(<String>['shell', command, ...arguments], environment: environment); } /// Executes [command] on `adb shell` and returns its standard output as a [String]. Future<String> shellEval(String command, List<String> arguments, { Map<String, String> environment }) { - return adb(<String>['shell', command]..addAll(arguments), environment: environment); + return adb(<String>['shell', command, ...arguments], environment: environment); } /// Runs `adb` with the given [arguments], selecting this device. Future<String> adb(List<String> arguments, { Map<String, String> environment }) { - return eval(adbPath, <String>['-s', deviceId]..addAll(arguments), environment: environment, canFail: false); + return eval(adbPath, <String>['-s', deviceId, ...arguments], environment: environment, canFail: false); } @override
diff --git a/dev/devicelab/lib/framework/apk_utils.dart b/dev/devicelab/lib/framework/apk_utils.dart index d4780f8..bbbfa08 100644 --- a/dev/devicelab/lib/framework/apk_utils.dart +++ b/dev/devicelab/lib/framework/apk_utils.dart
@@ -194,7 +194,7 @@ Future<ProcessResult> resultOfFlutterCommand(String command, List<String> options) { return Process.run( path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>[command]..addAll(options), + <String>[command, ...options], workingDirectory: rootPath, ); }
diff --git a/dev/devicelab/lib/framework/utils.dart b/dev/devicelab/lib/framework/utils.dart index 42613a3..68ef798 100644 --- a/dev/devicelab/lib/framework/utils.dart +++ b/dev/devicelab/lib/framework/utils.dart
@@ -235,7 +235,7 @@ environment ??= <String, String>{}; environment['BOT'] = isBot ? 'true' : 'false'; final Process process = await _processManager.start( - <String>[executable]..addAll(arguments), + <String>[executable, ...arguments], environment: environment, workingDirectory: workingDirectory ?? cwd, );
diff --git a/dev/devicelab/lib/tasks/hot_mode_tests.dart b/dev/devicelab/lib/tasks/hot_mode_tests.dart index 10fa924..1b245bf 100644 --- a/dev/devicelab/lib/tasks/hot_mode_tests.dart +++ b/dev/devicelab/lib/tasks/hot_mode_tests.dart
@@ -39,7 +39,7 @@ { final Process process = await startProcess( path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>['run']..addAll(options), + <String>['run', ...options], environment: null, ); @@ -93,7 +93,7 @@ { final Process process = await startProcess( path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>['run']..addAll(options), + <String>['run', ...options], environment: null, ); final Completer<void> stdoutDone = Completer<void>();
diff --git a/dev/devicelab/lib/tasks/microbenchmarks.dart b/dev/devicelab/lib/tasks/microbenchmarks.dart index 2a3153b..2436c76 100644 --- a/dev/devicelab/lib/tasks/microbenchmarks.dart +++ b/dev/devicelab/lib/tasks/microbenchmarks.dart
@@ -65,7 +65,7 @@ bool canFail = false, Map<String, String> environment, }) { - final List<String> args = <String>['run']..addAll(options); + final List<String> args = <String>['run', ...options]; return startProcess(path.join(flutterDirectory.path, 'bin', 'flutter'), args, environment: environment); }
diff --git a/dev/devicelab/lib/tasks/plugin_tests.dart b/dev/devicelab/lib/tasks/plugin_tests.dart index cc9e7b2..45681da 100644 --- a/dev/devicelab/lib/tasks/plugin_tests.dart +++ b/dev/devicelab/lib/tasks/plugin_tests.dart
@@ -65,7 +65,7 @@ await inDirectory(directory, () async { await flutter( 'create', - options: <String>['--template=app', '--org', 'io.flutter.devicelab']..addAll(options)..add('plugintest'), + options: <String>['--template=app', '--org', 'io.flutter.devicelab', ...options, 'plugintest'], ); }); return FlutterProject(directory, 'plugintest');
diff --git a/dev/devicelab/lib/tasks/run_without_leak.dart b/dev/devicelab/lib/tasks/run_without_leak.dart index eb9ff50..b06364a 100644 --- a/dev/devicelab/lib/tasks/run_without_leak.dart +++ b/dev/devicelab/lib/tasks/run_without_leak.dart
@@ -24,7 +24,7 @@ await inDirectory<void>(dir, () async { final Process process = await startProcess( path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>['run']..addAll(options), + <String>['run', ...options], environment: null, ); final Completer<void> stdoutDone = Completer<void>();
diff --git a/dev/devicelab/lib/tasks/web_dev_mode_tests.dart b/dev/devicelab/lib/tasks/web_dev_mode_tests.dart index cd5685e..dbb5e00 100644 --- a/dev/devicelab/lib/tasks/web_dev_mode_tests.dart +++ b/dev/devicelab/lib/tasks/web_dev_mode_tests.dart
@@ -37,7 +37,7 @@ await packagesGet.exitCode; final Process process = await startProcess( path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>['run']..addAll(options), + <String>['run', ...options], environment: <String, String>{ 'FLUTTER_WEB': 'true', }, @@ -96,7 +96,7 @@ { final Process process = await startProcess( path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>['run']..addAll(options), + <String>['run', ...options], environment: <String, String>{ 'FLUTTER_WEB': 'true', },
diff --git a/dev/devicelab/test/run_test.dart b/dev/devicelab/test/run_test.dart index 7722023..c877e98 100644 --- a/dev/devicelab/test/run_test.dart +++ b/dev/devicelab/test/run_test.dart
@@ -21,7 +21,7 @@ } final String dart = path.absolute(path.join('..', '..', 'bin', 'cache', 'dart-sdk', 'bin', 'dart')); final ProcessResult scriptProcess = processManager.runSync( - <String>[dart]..addAll(options) + <String>[dart, ...options] ); return scriptProcess; }
diff --git a/dev/snippets/lib/snippets.dart b/dev/snippets/lib/snippets.dart index f4dd8d6..20f5da7 100644 --- a/dev/snippets/lib/snippets.dart +++ b/dev/snippets/lib/snippets.dart
@@ -175,7 +175,8 @@ } return <_ComponentTuple>[ _ComponentTuple('description', description), - ]..addAll(components); + ...components, + ]; } String _loadFileAsUtf8(File file) {
diff --git a/dev/snippets/pubspec.yaml b/dev/snippets/pubspec.yaml index 6f8fa69..59d06d6 100644 --- a/dev/snippets/pubspec.yaml +++ b/dev/snippets/pubspec.yaml
@@ -6,7 +6,7 @@ environment: # The pub client defaults to an <2.0.0 sdk constraint which we need to explicitly overwrite. - sdk: ">=2.0.0-dev.68.0 <3.0.0" + sdk: ">=2.2.2 <3.0.0" dartdoc: # Exclude this package from the hosted API docs (Ironically...).
diff --git a/dev/tools/dartdoc.dart b/dev/tools/dartdoc.dart index 840a020..774ad3c 100644 --- a/dev/tools/dartdoc.dart +++ b/dev/tools/dartdoc.dart
@@ -117,7 +117,7 @@ // Verify which version of dartdoc we're using. final ProcessResult result = Process.runSync( pubExecutable, - <String>[]..addAll(dartdocBaseArgs)..add('--version'), + <String>[...dartdocBaseArgs, '--version'], workingDirectory: kDocsRoot, environment: pubEnvironment, ); @@ -137,7 +137,8 @@ // Generate the documentation. // We don't need to exclude flutter_tools in this list because it's not in the // recursive dependencies of the package defined at dev/docs/pubspec.yaml - final List<String> dartdocArgs = <String>[]..addAll(dartdocBaseArgs)..addAll(<String>[ + final List<String> dartdocArgs = <String>[ + ...dartdocBaseArgs, '--inject-html', '--header', 'styles.html', '--header', 'analytics.html', @@ -145,7 +146,8 @@ '--header', 'snippets.html', '--header', 'opensearch.html', '--footer-text', 'lib/footer.html', - '--allow-warnings-in-packages', <String>[ + '--allow-warnings-in-packages', + <String>[ 'Flutter', 'flutter', 'platform_integration', @@ -198,7 +200,7 @@ '--favicon=favicon.ico', '--package-order', 'flutter,Dart,platform_integration,flutter_test,flutter_driver', '--auto-include-dependencies', - ]); + ]; String quote(String arg) => arg.contains(' ') ? "'$arg'" : arg; print('Executing: (cd $kDocsRoot ; $pubExecutable ${dartdocArgs.map<String>(quote).join(' ')})');
diff --git a/dev/tools/pubspec.yaml b/dev/tools/pubspec.yaml index b441205..d346ff6 100644 --- a/dev/tools/pubspec.yaml +++ b/dev/tools/pubspec.yaml
@@ -3,7 +3,7 @@ environment: # The pub client defaults to an <2.0.0 sdk constraint which we need to explicitly overwrite. - sdk: ">=2.2.0 <3.0.0" + sdk: ">=2.2.2 <3.0.0" dependencies: archive: 2.0.10
diff --git a/examples/flutter_gallery/lib/demo/cupertino/cupertino_navigation_demo.dart b/examples/flutter_gallery/lib/demo/cupertino/cupertino_navigation_demo.dart index 43eb73f..5f842a0 100644 --- a/examples/flutter_gallery/lib/demo/cupertino/cupertino_navigation_demo.dart +++ b/examples/flutter_gallery/lib/demo/cupertino/cupertino_navigation_demo.dart
@@ -434,7 +434,8 @@ child: ListView( children: <Widget>[ Tab2Header(), - ]..addAll(buildTab2Conversation()), + ...buildTab2Conversation(), + ], ), ), );
diff --git a/examples/flutter_gallery/lib/demo/pesto_demo.dart b/examples/flutter_gallery/lib/demo/pesto_demo.dart index f882950..cff30f0 100644 --- a/examples/flutter_gallery/lib/demo/pesto_demo.dart +++ b/examples/flutter_gallery/lib/demo/pesto_demo.dart
@@ -493,11 +493,9 @@ ), ] ), - ]..addAll(recipe.ingredients.map<TableRow>( - (RecipeIngredient ingredient) { + ...recipe.ingredients.map<TableRow>((RecipeIngredient ingredient) { return _buildItemRow(ingredient.amount, ingredient.description); - } - ))..add( + }), TableRow( children: <Widget>[ const SizedBox(), @@ -506,12 +504,11 @@ child: Text('Steps', style: headingStyle), ), ] - ) - )..addAll(recipe.steps.map<TableRow>( - (RecipeStep step) { + ), + ...recipe.steps.map<TableRow>((RecipeStep step) { return _buildItemRow(step.duration ?? '', step.description); - } - )), + }), + ], ), ), ),
diff --git a/examples/flutter_gallery/lib/gallery/options.dart b/examples/flutter_gallery/lib/gallery/options.dart index fb1bb2f..c5642be 100644 --- a/examples/flutter_gallery/lib/gallery/options.dart +++ b/examples/flutter_gallery/lib/gallery/options.dart
@@ -455,18 +455,14 @@ const Divider(), const _Heading('Platform mechanics'), _PlatformItem(options, onOptionsChanged), - ]..addAll( - _enabledDiagnosticItems(), - )..addAll( - <Widget>[ - const Divider(), - const _Heading('Flutter gallery'), - _ActionItem('About Flutter Gallery', () { - showGalleryAboutDialog(context); - }), - _ActionItem('Send feedback', onSendFeedback), - ], - ), + ..._enabledDiagnosticItems(), + const Divider(), + const _Heading('Flutter gallery'), + _ActionItem('About Flutter Gallery', () { + showGalleryAboutDialog(context); + }), + _ActionItem('Send feedback', onSendFeedback), + ], ), ); }
diff --git a/examples/flutter_gallery/pubspec.yaml b/examples/flutter_gallery/pubspec.yaml index d7b0ebd..10f9ac4 100644 --- a/examples/flutter_gallery/pubspec.yaml +++ b/examples/flutter_gallery/pubspec.yaml
@@ -2,7 +2,7 @@ environment: # The pub client defaults to an <2.0.0 sdk constraint which we need to explicitly overwrite. - sdk: ">=2.2.0 <3.0.0" + sdk: ">=2.2.2 <3.0.0" dependencies: flutter:
diff --git a/packages/flutter/lib/src/rendering/box.dart b/packages/flutter/lib/src/rendering/box.dart index 5b3babc..99e03b2 100644 --- a/packages/flutter/lib/src/rendering/box.dart +++ b/packages/flutter/lib/src/rendering/box.dart
@@ -2010,13 +2010,13 @@ // TODO(jacobr): consider nesting the failures object so it is collapsible. throw FlutterError.fromParts(<DiagnosticsNode>[ ErrorSummary('The intrinsic dimension methods of the $runtimeType class returned values that violate the intrinsic protocol contract.'), - ErrorDescription('The following ${failures.length > 1 ? "failures" : "failure"} was detected:') // should this be tagged as an error or not? - ]..addAll(failures) - ..add(ErrorHint( + ErrorDescription('The following ${failures.length > 1 ? "failures" : "failure"} was detected:'), // should this be tagged as an error or not? + ...failures, + ErrorHint( 'If you are not writing your own RenderBox subclass, then this is not\n' 'your fault. Contact support: https://github.com/flutter/flutter/issues/new?template=BUG.md' - )) - ); + ), + ]); } } return true;
diff --git a/packages/flutter/lib/src/rendering/flex.dart b/packages/flutter/lib/src/rendering/flex.dart index e2abfe9..2db99f0 100644 --- a/packages/flutter/lib/src/rendering/flex.dart +++ b/packages/flutter/lib/src/rendering/flex.dart
@@ -708,12 +708,13 @@ ' http://api.flutter.dev/flutter/rendering/debugDumpRenderTree.html' ), describeForError('The affected RenderFlex is', style: DiagnosticsTreeStyle.errorProperty), - DiagnosticsProperty<dynamic>('The creator information is set to', debugCreator, style: DiagnosticsTreeStyle.errorProperty) - ]..addAll(addendum) - ..add(ErrorDescription( - 'If none of the above helps enough to fix this problem, please don\'t hesitate to file a bug:\n' - ' https://github.com/flutter/flutter/issues/new?template=BUG.md' - ))); + DiagnosticsProperty<dynamic>('The creator information is set to', debugCreator, style: DiagnosticsTreeStyle.errorProperty), + ...addendum, + ErrorDescription( + 'If none of the above helps enough to fix this problem, please don\'t hesitate to file a bug:\n' + ' https://github.com/flutter/flutter/issues/new?template=BUG.md' + ) + ]); }()); totalFlex += childParentData.flex; lastFlexChild = child;
diff --git a/packages/flutter/lib/src/rendering/sliver.dart b/packages/flutter/lib/src/rendering/sliver.dart index e8b6b23..f79ca92 100644 --- a/packages/flutter/lib/src/rendering/sliver.dart +++ b/packages/flutter/lib/src/rendering/sliver.dart
@@ -1204,15 +1204,16 @@ if (geometry.paintExtent > constraints.remainingPaintExtent) { throw FlutterError.fromParts(<DiagnosticsNode>[ ErrorSummary('SliverGeometry has a paintOffset that exceeds the remainingPaintExtent from the constraints.'), - describeForError('The render object whose geometry violates the constraints is the following') - ]..addAll(_debugCompareFloats( + describeForError('The render object whose geometry violates the constraints is the following'), + ..._debugCompareFloats( 'remainingPaintExtent', constraints.remainingPaintExtent, 'paintExtent', geometry.paintExtent, - )) - ..add(ErrorDescription( - 'The paintExtent must cause the child sliver to paint within the viewport, and so ' - 'cannot exceed the remainingPaintExtent.', - ))); + ), + ErrorDescription( + 'The paintExtent must cause the child sliver to paint within the viewport, and so ' + 'cannot exceed the remainingPaintExtent.', + ), + ]); } return true; }());
diff --git a/packages/flutter/lib/src/widgets/editable_text.dart b/packages/flutter/lib/src/widgets/editable_text.dart index b986bb3..b7be8e9 100644 --- a/packages/flutter/lib/src/widgets/editable_text.dart +++ b/packages/flutter/lib/src/widgets/editable_text.dart
@@ -344,10 +344,10 @@ _strutStyle = strutStyle, keyboardType = keyboardType ?? (maxLines == 1 ? TextInputType.text : TextInputType.multiline), inputFormatters = maxLines == 1 - ? ( - <TextInputFormatter>[BlacklistingTextInputFormatter.singleLineFormatter] - ..addAll(inputFormatters ?? const Iterable<TextInputFormatter>.empty()) - ) + ? <TextInputFormatter>[ + BlacklistingTextInputFormatter.singleLineFormatter, + ...inputFormatters ?? const Iterable<TextInputFormatter>.empty(), + ] : inputFormatters, showCursor = showCursor ?? !readOnly, super(key: key);
diff --git a/packages/flutter/test/services/message_codecs_test.dart b/packages/flutter/test/services/message_codecs_test.dart index c5c3845..c69d0d6 100644 --- a/packages/flutter/test/services/message_codecs_test.dart +++ b/packages/flutter/test/services/message_codecs_test.dart
@@ -122,22 +122,22 @@ _checkEncoding<dynamic>( standard, Uint8List(253), - <int>[8, 253]..addAll(List<int>.filled(253, 0)), + <int>[8, 253, ...List<int>.filled(253, 0)], ); _checkEncoding<dynamic>( standard, Uint8List(254), - <int>[8, 254, 254, 0]..addAll(List<int>.filled(254, 0)), + <int>[8, 254, 254, 0, ...List<int>.filled(254, 0)], ); _checkEncoding<dynamic>( standard, Uint8List(0xffff), - <int>[8, 254, 0xff, 0xff]..addAll(List<int>.filled(0xffff, 0)), + <int>[8, 254, 0xff, 0xff, ...List<int>.filled(0xffff, 0)], ); _checkEncoding<dynamic>( standard, Uint8List(0xffff + 1), - <int>[8, 255, 0, 0, 1, 0]..addAll(List<int>.filled(0xffff + 1, 0)), + <int>[8, 255, 0, 0, 1, 0, ...List<int>.filled(0xffff + 1, 0)], ); }); test('should encode and decode simple messages', () {
diff --git a/packages/flutter/test/widgets/scrollable_semantics_test.dart b/packages/flutter/test/widgets/scrollable_semantics_test.dart index 0f28aa9..5208869 100644 --- a/packages/flutter/test/widgets/scrollable_semantics_test.dart +++ b/packages/flutter/test/widgets/scrollable_semantics_test.dart
@@ -196,7 +196,8 @@ title: Text('App Bar'), ), ), - ]..addAll(slivers), + ...slivers, + ], ); }, ),
diff --git a/packages/flutter/test/widgets/scrollbar_test.dart b/packages/flutter/test/widgets/scrollbar_test.dart index f05994a..b6a85b0 100644 --- a/packages/flutter/test/widgets/scrollbar_test.dart +++ b/packages/flutter/test/widgets/scrollbar_test.dart
@@ -113,16 +113,17 @@ scrollMetrics: defaultMetrics, ); - final List<ScrollMetrics> metricsList = - <ScrollMetrics> [startingMetrics.copyWith(pixels: 0.01)] - ..addAll(List<ScrollMetrics>.generate( - (maxExtent/viewportDimension).round(), - (int index) => startingMetrics.copyWith(pixels: (index + 1) * viewportDimension), - ).where((ScrollMetrics metrics) => !metrics.outOfRange)) - ..add(startingMetrics.copyWith(pixels: maxExtent - 0.01)); + final List<ScrollMetrics> metricsList = <ScrollMetrics> [ + startingMetrics.copyWith(pixels: 0.01), + ...List<ScrollMetrics>.generate( + (maxExtent / viewportDimension).round(), + (int index) => startingMetrics.copyWith(pixels: (index + 1) * viewportDimension), + ).where((ScrollMetrics metrics) => !metrics.outOfRange), + startingMetrics.copyWith(pixels: maxExtent - 0.01), + ]; double lastCoefficient; - for(ScrollMetrics metrics in metricsList) { + for (ScrollMetrics metrics in metricsList) { painter.update(metrics, metrics.axisDirection); painter.paint(testCanvas, size);
diff --git a/packages/flutter/test/widgets/sliver_semantics_test.dart b/packages/flutter/test/widgets/sliver_semantics_test.dart index 5e6dbdc..c1ef222 100644 --- a/packages/flutter/test/widgets/sliver_semantics_test.dart +++ b/packages/flutter/test/widgets/sliver_semantics_test.dart
@@ -599,7 +599,8 @@ expandedHeight: 100.0, title: Text('AppBar'), ), - ]..addAll(slivers), + ...slivers, + ], ), ), ), @@ -824,7 +825,8 @@ expandedHeight: 100.0, title: Text('AppBar'), ), - ]..addAll(slivers), + ...slivers, + ], ), ), ),
diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart index 4a5397b..6ebd461 100644 --- a/packages/flutter_tools/lib/src/android/android_device.dart +++ b/packages/flutter_tools/lib/src/android/android_device.dart
@@ -219,7 +219,7 @@ _AndroidDevicePortForwarder _portForwarder; List<String> adbCommandForDevice(List<String> args) { - return <String>[getAdbPath(androidSdk), '-s', id]..addAll(args); + return <String>[getAdbPath(androidSdk), '-s', id, ...args]; } String runAdbCheckedSync(
diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart index 184ea17..30a734f 100644 --- a/packages/flutter_tools/lib/src/asset.dart +++ b/packages/flutter_tools/lib/src/asset.dart
@@ -458,7 +458,7 @@ )); } else { packageFontAssets.add(FontAsset( - Uri(pathSegments: <String>['packages', packageName]..addAll(assetUri.pathSegments)), + Uri(pathSegments: <String>['packages', packageName, ...assetUri.pathSegments]), weight: fontAsset.weight, style: fontAsset.style, )); @@ -677,7 +677,7 @@ baseDir: assetsBaseDir, entryUri: packageName == null ? assetUri // Asset from the current application. - : Uri(pathSegments: <String>['packages', packageName]..addAll(assetUri.pathSegments)), // Asset from, and declared in $packageName. + : Uri(pathSegments: <String>['packages', packageName, ...assetUri.pathSegments]), // Asset from, and declared in $packageName. relativeUri: assetUri, ); }
diff --git a/packages/flutter_tools/lib/src/base/build.dart b/packages/flutter_tools/lib/src/base/build.dart index fb85ba3..8dded97 100644 --- a/packages/flutter_tools/lib/src/base/build.dart +++ b/packages/flutter_tools/lib/src/base/build.dart
@@ -51,7 +51,8 @@ }) { final List<String> args = <String>[ '--causal_async_stacks', - ]..addAll(additionalArgs); + ...additionalArgs, + ]; final String snapshotterPath = getSnapshotterPath(snapshotType); @@ -61,7 +62,7 @@ // architecture. if (snapshotType.platform == TargetPlatform.ios) { final String hostArch = iosArch == IOSArch.armv7 ? '-i386' : '-x86_64'; - return runCommandAndStreamOutput(<String>['/usr/bin/arch', hostArch, snapshotterPath]..addAll(args)); + return runCommandAndStreamOutput(<String>['/usr/bin/arch', hostArch, snapshotterPath, ...args]); } StringConverter outputFilter; @@ -72,8 +73,7 @@ outputFilter = (String line) => line != kStripWarning ? line : null; } - return runCommandAndStreamOutput(<String>[snapshotterPath]..addAll(args), - mapFunction: outputFilter); + return runCommandAndStreamOutput(<String>[snapshotterPath, ...args], mapFunction: outputFilter); } } @@ -168,7 +168,7 @@ // If inputs and outputs have not changed since last run, skip the build. final Fingerprinter fingerprinter = Fingerprinter( fingerprintPath: '$depfilePath.fingerprint', - paths: <String>[mainPath]..addAll(inputPaths)..addAll(outputPaths), + paths: <String>[mainPath, ...inputPaths, ...outputPaths], properties: <String, String>{ 'buildMode': buildMode.toString(), 'targetPlatform': platform.toString(), @@ -422,7 +422,7 @@ // If inputs and outputs have not changed since last run, skip the build. final Fingerprinter fingerprinter = Fingerprinter( fingerprintPath: '$depfilePath.fingerprint', - paths: <String>[mainPath]..addAll(inputPaths)..addAll(outputPaths), + paths: <String>[mainPath, ...inputPaths, ...outputPaths], properties: <String, String>{ 'buildMode': buildMode.toString(), 'targetPlatform': platform.toString(),
diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart index 52e1ca7..d310d10 100644 --- a/packages/flutter_tools/lib/src/cache.dart +++ b/packages/flutter_tools/lib/src/cache.dart
@@ -923,7 +923,7 @@ @visibleForTesting String flattenNameSubdirs(Uri url) { - final List<String> pieces = <String>[url.host]..addAll(url.pathSegments); + final List<String> pieces = <String>[url.host, ...url.pathSegments]; final Iterable<String> convertedPieces = pieces.map<String>(_flattenNameNoSubdirs); return fs.path.joinAll(convertedPieces); }
diff --git a/packages/flutter_tools/lib/src/commands/build_aot.dart b/packages/flutter_tools/lib/src/commands/build_aot.dart index 7dfd45b..4a86582 100644 --- a/packages/flutter_tools/lib/src/commands/build_aot.dart +++ b/packages/flutter_tools/lib/src/commands/build_aot.dart
@@ -127,10 +127,13 @@ if ((await Future.wait<int>(exitCodes.values)).every((int buildExitCode) => buildExitCode == 0)) { final Iterable<String> dylibs = iosBuilds.values.map<String>((String outputDir) => fs.path.join(outputDir, 'App.framework', 'App')); fs.directory(fs.path.join(outputPath, 'App.framework'))..createSync(); - await runCheckedAsync(<String>['lipo'] - ..addAll(dylibs) - ..addAll(<String>['-create', '-output', fs.path.join(outputPath, 'App.framework', 'App')]), - ); + await runCheckedAsync(<String>[ + 'lipo', + ...dylibs, + '-create', + '-output', + fs.path.join(outputPath, 'App.framework', 'App'), + ]); } else { status?.cancel(); exitCodes.forEach((IOSArch iosArch, Future<int> exitCodeFuture) async {
diff --git a/packages/flutter_tools/lib/src/commands/drive.dart b/packages/flutter_tools/lib/src/commands/drive.dart index 22232ab..76332c0 100644 --- a/packages/flutter_tools/lib/src/commands/drive.dart +++ b/packages/flutter_tools/lib/src/commands/drive.dart
@@ -182,7 +182,7 @@ // if the application is `lib/foo/bar.dart`, the test file is expected to // be `test_driver/foo/bar_test.dart`. final String pathWithNoExtension = fs.path.withoutExtension(fs.path.joinAll( - <String>[packageDir, 'test_driver']..addAll(parts.skip(1)))); + <String>[packageDir, 'test_driver', ...parts.skip(1)])); return '${pathWithNoExtension}_test${fs.path.extension(appFile)}'; } } @@ -297,13 +297,13 @@ PackageMap.globalPackagesPath = fs.path.normalize(fs.path.absolute(PackageMap.globalPackagesPath)); final String dartVmPath = fs.path.join(dartSdkPath, 'bin', 'dart'); final int result = await runCommandAndStreamOutput( - <String>[dartVmPath] - ..addAll(dartVmFlags) - ..addAll(testArgs) - ..addAll(<String>[ - '--packages=${PackageMap.globalPackagesPath}', - '-rexpanded', - ]), + <String>[ + dartVmPath, + ...dartVmFlags, + ...testArgs, + '--packages=${PackageMap.globalPackagesPath}', + '-rexpanded', + ], environment: <String, String>{'VM_SERVICE_URL': observatoryUri}, ); if (result != 0)
diff --git a/packages/flutter_tools/lib/src/commands/packages.dart b/packages/flutter_tools/lib/src/commands/packages.dart index 4a3da9f..bb3607a 100644 --- a/packages/flutter_tools/lib/src/commands/packages.dart +++ b/packages/flutter_tools/lib/src/commands/packages.dart
@@ -163,7 +163,7 @@ @override Future<FlutterCommandResult> runCommand() async { - await pub(<String>['run', 'test']..addAll(argResults.rest), context: PubContext.runTest, retry: false); + await pub(<String>['run', 'test', ...argResults.rest], context: PubContext.runTest, retry: false); return null; } } @@ -193,7 +193,7 @@ @override Future<FlutterCommandResult> runCommand() async { - await pub(<String>[_commandName]..addAll(argResults.rest), context: PubContext.pubForward, retry: false); + await pub(<String>[_commandName, ...argResults.rest], context: PubContext.pubForward, retry: false); return null; }
diff --git a/packages/flutter_tools/lib/src/dart/pub.dart b/packages/flutter_tools/lib/src/dart/pub.dart index 7cd554b..ebbb02d 100644 --- a/packages/flutter_tools/lib/src/dart/pub.dart +++ b/packages/flutter_tools/lib/src/dart/pub.dart
@@ -192,7 +192,7 @@ /// The command used for running pub. List<String> _pubCommand(List<String> arguments) { - return <String>[ sdkBinaryName('pub') ]..addAll(arguments); + return <String>[sdkBinaryName('pub'), ...arguments]; } /// The full environment used when running pub.
diff --git a/packages/flutter_tools/lib/src/fuchsia/fuchsia_kernel_compiler.dart b/packages/flutter_tools/lib/src/fuchsia/fuchsia_kernel_compiler.dart index 3377b57..736e237 100644 --- a/packages/flutter_tools/lib/src/fuchsia/fuchsia_kernel_compiler.dart +++ b/packages/flutter_tools/lib/src/fuchsia/fuchsia_kernel_compiler.dart
@@ -84,9 +84,10 @@ ]; final List<String> command = <String>[ - artifacts.getArtifactPath(Artifact.engineDartBinary), - fuchsiaArtifacts.kernelCompiler.path, - ]..addAll(flags); + artifacts.getArtifactPath(Artifact.engineDartBinary), + fuchsiaArtifacts.kernelCompiler.path, + ...flags, + ]; final Process process = await runCommand(command); final Status status = logger.startProgress( 'Building Fuchsia application...',
diff --git a/packages/flutter_tools/lib/src/macos/xcode.dart b/packages/flutter_tools/lib/src/macos/xcode.dart index 4cb57c7..7cb7d04 100644 --- a/packages/flutter_tools/lib/src/macos/xcode.dart +++ b/packages/flutter_tools/lib/src/macos/xcode.dart
@@ -90,11 +90,11 @@ } Future<RunResult> cc(List<String> args) { - return runCheckedAsync(<String>['xcrun', 'cc']..addAll(args)); + return runCheckedAsync(<String>['xcrun', 'cc', ...args]); } Future<RunResult> clang(List<String> args) { - return runCheckedAsync(<String>['xcrun', 'clang']..addAll(args)); + return runCheckedAsync(<String>['xcrun', 'clang', ...args]); } String getSimulatorPath() {
diff --git a/packages/flutter_tools/test/base/flags_test.dart b/packages/flutter_tools/test/base/flags_test.dart index e49a7af..0bea2ab 100644 --- a/packages/flutter_tools/test/base/flags_test.dart +++ b/packages/flutter_tools/test/base/flags_test.dart
@@ -17,7 +17,7 @@ Cache.disableLocking(); Future<void> runCommand(Iterable<String> flags, _TestMethod testMethod) async { - final List<String> args = <String>['test']..addAll(flags); + final List<String> args = <String>['test', ...flags]; final _TestCommand command = _TestCommand(testMethod); await createTestCommandRunner(command).run(args); }
diff --git a/packages/flutter_tools/test/commands/create_test.dart b/packages/flutter_tools/test/commands/create_test.dart index 5ea6689..4da6a9c 100644 --- a/packages/flutter_tools/test/commands/create_test.dart +++ b/packages/flutter_tools/test/commands/create_test.dart
@@ -1169,10 +1169,11 @@ 'flutter_tools.dart', )); - final List<String> args = <String>[] - ..addAll(dartVmFlags) - ..add(flutterToolsPath) - ..add('analyze'); + final List<String> args = <String>[ + ...dartVmFlags, + flutterToolsPath, + 'analyze', + ]; final ProcessResult exec = await Process.run( '$dartSdkPath/bin/dart', @@ -1196,21 +1197,22 @@ // files anymore. await Process.run( '$dartSdkPath/bin/dart', - <String>[] - ..addAll(dartVmFlags) - ..add(flutterToolsPath) - ..addAll(<String>['packages', 'get']), + <String>[ + ...dartVmFlags, + flutterToolsPath, + 'packages', + 'get', + ], workingDirectory: workingDir.path, ); - final List<String> args = <String>[] - ..addAll(dartVmFlags) - ..add(flutterToolsPath) - ..add('test') - ..add('--no-color'); - if (target != null) { - args.add(target); - } + final List<String> args = <String>[ + ...dartVmFlags, + flutterToolsPath, + 'test', + '--no-color', + if (target != null) target, + ]; final ProcessResult exec = await Process.run( '$dartSdkPath/bin/dart',
diff --git a/packages/flutter_tools/test/commands/test_test.dart b/packages/flutter_tools/test/commands/test_test.dart index 8b7ad9d..e8b5070 100644 --- a/packages/flutter_tools/test/commands/test_test.dart +++ b/packages/flutter_tools/test/commands/test_test.dart
@@ -172,13 +172,14 @@ if (!testFile.existsSync()) fail('missing test file: $testFile'); - final List<String> args = <String>[] - ..addAll(dartVmFlags) - ..add(fs.path.absolute(fs.path.join('bin', 'flutter_tools.dart'))) - ..add('test') - ..add('--no-color') - ..addAll(extraArgs) - ..add(testFilePath); + final List<String> args = <String>[ + ...dartVmFlags, + fs.path.absolute(fs.path.join('bin', 'flutter_tools.dart')), + 'test', + '--no-color', + ...extraArgs, + testFilePath + ]; while (_testExclusionLock != null) await _testExclusionLock;
diff --git a/packages/flutter_tools/test/src/common.dart b/packages/flutter_tools/test/src/common.dart index 27fe71c..75f95c9 100644 --- a/packages/flutter_tools/test/src/common.dart +++ b/packages/flutter_tools/test/src/common.dart
@@ -131,7 +131,7 @@ final String projectPath = fs.path.join(temp.path, 'flutter_project'); final CreateCommand command = CreateCommand(); final CommandRunner<void> runner = createTestCommandRunner(command); - await runner.run(<String>['create']..addAll(arguments)..add(projectPath)); + await runner.run(<String>['create', ...arguments, projectPath]); return projectPath; }