diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart
index 45e46bc..0a3b8a6 100644
--- a/packages/flutter_tools/lib/src/android/android_device.dart
+++ b/packages/flutter_tools/lib/src/android/android_device.dart
@@ -63,7 +63,7 @@
     String id, {
     this.productID,
     this.modelID,
-    this.deviceCodeName
+    this.deviceCodeName,
   }) : super(id);
 
   final String productID;
@@ -295,7 +295,7 @@
     }
 
     await runCheckedAsync(adbCommandForDevice(<String>[
-      'shell', 'echo', '-n', _getSourceSha1(app), '>', _getDeviceSha1Path(app)
+      'shell', 'echo', '-n', _getSourceSha1(app), '>', _getDeviceSha1Path(app),
     ]));
     return true;
   }
@@ -505,7 +505,7 @@
   /// no available timestamp. The format can be passed to logcat's -T option.
   String get lastLogcatTimestamp {
     final String output = runCheckedSync(adbCommandForDevice(<String>[
-      'shell', '-x', 'logcat', '-v', 'time', '-t', '1'
+      'shell', '-x', 'logcat', '-v', 'time', '-t', '1',
     ]));
 
     final Match timeMatch = _timeRegExp.firstMatch(output);
@@ -579,7 +579,7 @@
 void parseADBDeviceOutput(
   String text, {
   List<AndroidDevice> devices,
-  List<String> diagnostics
+  List<String> diagnostics,
 }) {
   // Check for error messages from adb
   if (!text.contains('List of devices')) {
@@ -634,7 +634,7 @@
           deviceID,
           productID: info['product'],
           modelID: info['model'] ?? deviceID,
-          deviceCodeName: info['device']
+          deviceCodeName: info['device'],
         ));
       }
     } else {
@@ -651,7 +651,7 @@
   _AdbLogReader(this.device) {
     _linesController = StreamController<String>.broadcast(
       onListen: _start,
-      onCancel: _stop
+      onCancel: _stop,
     );
   }
 
@@ -707,7 +707,7 @@
     RegExp(r'^[WEF]\/AndroidRuntime:\s+'),
     RegExp(r'^[WEF]\/ActivityManager:\s+.*(\bflutter\b|\bdomokit\b|\bsky\b)'),
     RegExp(r'^[WEF]\/System\.err:\s+'),
-    RegExp(r'^[F]\/[\S^:]+:\s+')
+    RegExp(r'^[F]\/[\S^:]+:\s+'),
   ];
 
   // 'F/libc(pid): Fatal signal 11'
diff --git a/packages/flutter_tools/lib/src/android/android_emulator.dart b/packages/flutter_tools/lib/src/android/android_emulator.dart
index 5d6daf8..ea54133 100644
--- a/packages/flutter_tools/lib/src/android/android_emulator.dart
+++ b/packages/flutter_tools/lib/src/android/android_emulator.dart
@@ -57,7 +57,7 @@
     // seconds won't be recognized as such... :-/
     return Future.any<void>(<Future<void>>[
       launchResult,
-      Future<void>.delayed(const Duration(seconds: 3))
+      Future<void>.delayed(const Duration(seconds: 3)),
     ]);
   }
 }
diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart
index 73432f0..72545e0 100644
--- a/packages/flutter_tools/lib/src/android/android_sdk.dart
+++ b/packages/flutter_tools/lib/src/android/android_sdk.dart
@@ -72,7 +72,7 @@
 String getAvdPath() {
 
   final List<String> searchPaths = <String>[
-    platform.environment['ANDROID_AVD_HOME']
+    platform.environment['ANDROID_AVD_HOME'],
   ];
 
   if (platform.environment['HOME'] != null)
diff --git a/packages/flutter_tools/lib/src/android/apk.dart b/packages/flutter_tools/lib/src/android/apk.dart
index 4a0ded0..8b5b8d9 100644
--- a/packages/flutter_tools/lib/src/android/apk.dart
+++ b/packages/flutter_tools/lib/src/android/apk.dart
@@ -16,7 +16,7 @@
 Future<void> buildApk({
   @required FlutterProject project,
   @required String target,
-  BuildInfo buildInfo = BuildInfo.debug
+  BuildInfo buildInfo = BuildInfo.debug,
 }) async {
   if (!project.android.isUsingGradle) {
     throwToolExit(
@@ -35,7 +35,7 @@
     project: project,
     buildInfo: buildInfo,
     target: target,
-    isBuildingBundle: false
+    isBuildingBundle: false,
   );
   androidSdk.reinitialize();
 }
diff --git a/packages/flutter_tools/lib/src/android/app_bundle.dart b/packages/flutter_tools/lib/src/android/app_bundle.dart
index c8576c9..c1e94ab 100644
--- a/packages/flutter_tools/lib/src/android/app_bundle.dart
+++ b/packages/flutter_tools/lib/src/android/app_bundle.dart
@@ -17,7 +17,7 @@
 Future<void> buildAppBundle({
   @required FlutterProject project,
   @required String target,
-  BuildInfo buildInfo = BuildInfo.debug
+  BuildInfo buildInfo = BuildInfo.debug,
 }) async {
   if (!project.android.isUsingGradle) {
     throwToolExit(
@@ -44,6 +44,6 @@
     project: project,
     buildInfo: buildInfo,
     target: target,
-    isBuildingBundle: true
+    isBuildingBundle: true,
   );
 }
diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart
index 60fb758..af9b3e8 100644
--- a/packages/flutter_tools/lib/src/android/gradle.dart
+++ b/packages/flutter_tools/lib/src/android/gradle.dart
@@ -161,7 +161,7 @@
     project = GradleProject(
       <String>['debug', 'profile', 'release'],
       <String>[], flutterProject.android.gradleAppOutV1Directory,
-        flutterProject.android.gradleAppBundleOutV1Directory
+        flutterProject.android.gradleAppBundleOutV1Directory,
     );
   }
   status.stop();
@@ -464,7 +464,7 @@
       }
 
       return line;
-    }
+    },
   );
   status.stop();
 
diff --git a/packages/flutter_tools/lib/src/application_package.dart b/packages/flutter_tools/lib/src/application_package.dart
index 6cd1314..82816b7 100644
--- a/packages/flutter_tools/lib/src/application_package.dart
+++ b/packages/flutter_tools/lib/src/application_package.dart
@@ -85,7 +85,7 @@
     String id,
     @required this.file,
     @required this.versionCode,
-    @required this.launchActivity
+    @required this.launchActivity,
   }) : assert(file != null),
        assert(launchActivity != null),
        super(id: id);
@@ -123,7 +123,7 @@
       id: data.packageName,
       file: apk,
       versionCode: int.tryParse(data.versionCode),
-      launchActivity: '${data.packageName}/${data.launchableActivityName}'
+      launchActivity: '${data.packageName}/${data.launchableActivityName}',
     );
   }
 
@@ -204,7 +204,7 @@
       id: packageId,
       file: apkFile,
       versionCode: null,
-      launchActivity: launchActivity
+      launchActivity: launchActivity,
     );
   }
 
diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart
index 574e92d..2918097 100644
--- a/packages/flutter_tools/lib/src/asset.dart
+++ b/packages/flutter_tools/lib/src/asset.dart
@@ -44,7 +44,7 @@
     String assetDirPath,
     String packagesPath,
     bool includeDefaultFonts = true,
-    bool reportLicensedPackages = false
+    bool reportLicensedPackages = false,
   });
 }
 
@@ -92,7 +92,7 @@
     String assetDirPath,
     String packagesPath,
     bool includeDefaultFonts = true,
-    bool reportLicensedPackages = false
+    bool reportLicensedPackages = false,
   }) async {
     assetDirPath ??= getAssetBuildDirectory();
     packagesPath ??= fs.path.absolute(PackageMap.globalPackagesPath);
@@ -128,7 +128,7 @@
       packageMap,
       flutterManifest,
       assetBasePath,
-      excludeDirs: <String>[assetDirPath, getBuildDirectory()]
+      excludeDirs: <String>[assetDirPath, getBuildDirectory()],
     );
 
     if (assetVariants == null)
@@ -290,7 +290,7 @@
       result.add(_Asset(
         baseDir: fs.path.join(Cache.flutterRoot, 'bin', 'cache', 'artifacts', 'material_fonts'),
         relativeUri: Uri(path: entryUri.pathSegments.last),
-        entryUri: entryUri
+        entryUri: entryUri,
       ));
     }
   }
@@ -395,7 +395,7 @@
   FlutterManifest manifest,
   bool includeDefaultFonts,
   PackageMap packageMap, {
-  String packageName
+  String packageName,
 }) {
   final List<Map<String, dynamic>> fonts = <Map<String, dynamic>>[];
   if (manifest.usesMaterialDesign && includeDefaultFonts) {
@@ -526,7 +526,7 @@
   FlutterManifest flutterManifest,
   String assetBase, {
   List<String> excludeDirs = const <String>[],
-  String packageName
+  String packageName,
 }) {
   final Map<_Asset, List<_Asset>> result = <_Asset, List<_Asset>>{};
 
@@ -572,7 +572,7 @@
   Map<_Asset, List<_Asset>> result,
   Uri assetUri, {
   List<String> excludeDirs = const <String>[],
-  String packageName
+  String packageName,
 }) {
   final String directoryPath = fs.path.join(
       assetBase, assetUri.toFilePath(windows: platform.isWindows));
@@ -604,7 +604,7 @@
   Map<_Asset, List<_Asset>> result,
   Uri assetUri, {
   List<String> excludeDirs = const <String>[],
-  String packageName
+  String packageName,
 }) {
   final _Asset asset = _resolveAsset(
     packageMap,
diff --git a/packages/flutter_tools/lib/src/base/os.dart b/packages/flutter_tools/lib/src/base/os.dart
index 4cb0e5c..dd75337 100644
--- a/packages/flutter_tools/lib/src/base/os.dart
+++ b/packages/flutter_tools/lib/src/base/os.dart
@@ -62,7 +62,7 @@
     const Map<String, String> osNames = <String, String>{
       'macos': 'Mac OS',
       'linux': 'Linux',
-      'windows': 'Windows'
+      'windows': 'Windows',
     };
     final String osName = platform.operatingSystem;
     return osNames.containsKey(osName) ? osNames[osName] : osName;
diff --git a/packages/flutter_tools/lib/src/base/process.dart b/packages/flutter_tools/lib/src/base/process.dart
index fff1252..c6ab59c 100644
--- a/packages/flutter_tools/lib/src/base/process.dart
+++ b/packages/flutter_tools/lib/src/base/process.dart
@@ -111,7 +111,7 @@
   List<String> cmd, {
   String workingDirectory,
   bool allowReentrantFlutter = false,
-  Map<String, String> environment
+  Map<String, String> environment,
 }) {
   _traceCommand(cmd, workingDirectory: workingDirectory);
   return processManager.start(
@@ -137,13 +137,13 @@
   bool trace = false,
   RegExp filter,
   StringConverter mapFunction,
-  Map<String, String> environment
+  Map<String, String> environment,
 }) async {
   final Process process = await runCommand(
     cmd,
     workingDirectory: workingDirectory,
     allowReentrantFlutter: allowReentrantFlutter,
-    environment: environment
+    environment: environment,
   );
   final StreamSubscription<String> stdoutSubscription = process.stdout
     .transform<String>(utf8.decoder)
@@ -193,7 +193,7 @@
   List<String> command, {
   String workingDirectory,
   bool allowReentrantFlutter = false,
-  Map<String, String> environment
+  Map<String, String> environment,
 }) async {
   final Process process = await runCommand(
     command,
@@ -226,7 +226,7 @@
   List<String> cmd, {
   String workingDirectory,
   bool allowReentrantFlutter = false,
-  Map<String, String> environment
+  Map<String, String> environment,
 }) async {
   _traceCommand(cmd, workingDirectory: workingDirectory);
   final ProcessResult results = await processManager.run(
@@ -243,7 +243,7 @@
   List<String> cmd, {
   String workingDirectory,
   bool allowReentrantFlutter = false,
-  Map<String, String> environment
+  Map<String, String> environment,
 }) async {
   final RunResult result = await runAsync(
     cmd,
@@ -301,12 +301,12 @@
 String runSync(
   List<String> cmd, {
   String workingDirectory,
-  bool allowReentrantFlutter = false
+  bool allowReentrantFlutter = false,
 }) {
   return _runWithLoggingSync(
     cmd,
     workingDirectory: workingDirectory,
-    allowReentrantFlutter: allowReentrantFlutter
+    allowReentrantFlutter: allowReentrantFlutter,
   );
 }
 
diff --git a/packages/flutter_tools/lib/src/build_runner/build_script_generator.dart b/packages/flutter_tools/lib/src/build_runner/build_script_generator.dart
index 053de60..137ef53 100644
--- a/packages/flutter_tools/lib/src/build_runner/build_script_generator.dart
+++ b/packages/flutter_tools/lib/src/build_runner/build_script_generator.dart
@@ -40,7 +40,7 @@
       literalList(builders, refer('BuilderApplication', 'package:build_runner_core/build_runner_core.dart'))
         .assignFinal('_builders')
         .statement,
-      _createMain()
+      _createMain(),
     ]));
     final DartEmitter emitter = DartEmitter(Allocator.simplePrefixing());
     try {
diff --git a/packages/flutter_tools/lib/src/bundle.dart b/packages/flutter_tools/lib/src/bundle.dart
index ac3d219..def7e44 100644
--- a/packages/flutter_tools/lib/src/bundle.dart
+++ b/packages/flutter_tools/lib/src/bundle.dart
@@ -165,7 +165,7 @@
   String assetDirPath,
   String packagesPath,
   bool includeDefaultFonts = true,
-  bool reportLicensedPackages = false
+  bool reportLicensedPackages = false,
 }) async {
   assetDirPath ??= getAssetBuildDirectory();
   packagesPath ??= fs.path.absolute(PackageMap.globalPackagesPath);
@@ -177,7 +177,7 @@
     assetDirPath: assetDirPath,
     packagesPath: packagesPath,
     includeDefaultFonts: includeDefaultFonts,
-    reportLicensedPackages: reportLicensedPackages
+    reportLicensedPackages: reportLicensedPackages,
   );
   if (result != 0)
     return null;
diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart
index e1c1641..7f3aa7a 100644
--- a/packages/flutter_tools/lib/src/cache.dart
+++ b/packages/flutter_tools/lib/src/cache.dart
@@ -622,7 +622,7 @@
   r'>'.codeUnitAt(0): '@gt@'.codeUnits,
   r'"'.codeUnitAt(0): '@q@'.codeUnits,
   r'|'.codeUnitAt(0): '@pip@'.codeUnits,
-  r'?'.codeUnitAt(0): '@ques@'.codeUnits
+  r'?'.codeUnitAt(0): '@ques@'.codeUnits,
 };
 
 /// Given a name containing slashes, colons, and backslashes, expand it into
diff --git a/packages/flutter_tools/lib/src/codegen.dart b/packages/flutter_tools/lib/src/codegen.dart
index 105aac1..bc5f63b 100644
--- a/packages/flutter_tools/lib/src/codegen.dart
+++ b/packages/flutter_tools/lib/src/codegen.dart
@@ -194,7 +194,7 @@
         trackWidgetCreation: trackWidgetCreation,
         mainPath: mainPath,
         targetProductVm: targetProductVm,
-        extraFrontEndOptions: extraFrontEndOptions
+        extraFrontEndOptions: extraFrontEndOptions,
       );
       final File outputFile = fs.file(outputFilePath);
       if (!await outputFile.exists()) {
diff --git a/packages/flutter_tools/lib/src/commands/analyze_base.dart b/packages/flutter_tools/lib/src/commands/analyze_base.dart
index 2e9acfb..00ddbf0 100644
--- a/packages/flutter_tools/lib/src/commands/analyze_base.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze_base.dart
@@ -44,7 +44,7 @@
     final Map<String, dynamic> data = <String, dynamic>{
       'time': stopwatch.elapsedMilliseconds / 1000.0,
       'issues': errorCount,
-      'missingDartDocs': membersMissingDocumentation
+      'missingDartDocs': membersMissingDocumentation,
     };
     fs.file(benchmarkOut).writeAsStringSync(toPrettyJson(data));
     printStatus('Analysis benchmark written to $benchmarkOut ($data).');
diff --git a/packages/flutter_tools/lib/src/commands/build_aot.dart b/packages/flutter_tools/lib/src/commands/build_aot.dart
index f541aae..d9243be 100644
--- a/packages/flutter_tools/lib/src/commands/build_aot.dart
+++ b/packages/flutter_tools/lib/src/commands/build_aot.dart
@@ -25,13 +25,13 @@
       ..addOption('output-dir', defaultsTo: getAotBuildDirectory())
       ..addOption('target-platform',
         defaultsTo: 'android-arm',
-        allowed: <String>['android-arm', 'android-arm64', 'ios']
+        allowed: <String>['android-arm', 'android-arm64', 'ios'],
       )
       ..addFlag('quiet', defaultsTo: false)
       ..addFlag('build-shared-library',
         negatable: false,
         defaultsTo: false,
-        help: 'Compile to a *.so file (requires NDK when building for Android).'
+        help: 'Compile to a *.so file (requires NDK when building for Android).',
       )
       ..addMultiOption('ios-arch',
         splitCommas: true,
diff --git a/packages/flutter_tools/lib/src/commands/build_bundle.dart b/packages/flutter_tools/lib/src/commands/build_bundle.dart
index fed385d..40a0279 100644
--- a/packages/flutter_tools/lib/src/commands/build_bundle.dart
+++ b/packages/flutter_tools/lib/src/commands/build_bundle.dart
@@ -28,7 +28,7 @@
       ..addOption('depfile', defaultsTo: defaultDepfilePath)
       ..addOption('target-platform',
         defaultsTo: 'android-arm',
-        allowed: <String>['android-arm', 'android-arm64', 'android-x86', 'android-x64', 'ios']
+        allowed: <String>['android-arm', 'android-arm64', 'android-x86', 'android-x64', 'ios'],
       )
       ..addFlag('track-widget-creation',
         hide: !verboseHelp,
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart
index a9eb527..faaf109 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -56,19 +56,19 @@
   CreateCommand() {
     argParser.addFlag('pub',
       defaultsTo: true,
-      help: 'Whether to run "flutter packages get" after the project has been created.'
+      help: 'Whether to run "flutter packages get" after the project has been created.',
     );
     argParser.addFlag('offline',
       defaultsTo: false,
       help: 'When "flutter packages get" is run by the create command, this indicates '
         'whether to run it in offline mode or not. In offline mode, it will need to '
-        'have all dependencies already available in the pub cache to succeed.'
+        'have all dependencies already available in the pub cache to succeed.',
     );
     argParser.addFlag(
       'with-driver-test',
       negatable: true,
       defaultsTo: false,
-      help: "Also add a flutter_driver dependency and generate a sample 'flutter drive' test."
+      help: "Also add a flutter_driver dependency and generate a sample 'flutter drive' test.",
     );
     argParser.addOption(
       'template',
@@ -104,18 +104,18 @@
     argParser.addOption(
       'description',
       defaultsTo: 'A new Flutter project.',
-      help: 'The description to use for your new Flutter project. This string ends up in the pubspec.yaml file.'
+      help: 'The description to use for your new Flutter project. This string ends up in the pubspec.yaml file.',
     );
     argParser.addOption(
       'org',
       defaultsTo: 'com.example',
       help: 'The organization responsible for your new Flutter project, in reverse domain name notation. '
-            'This string is used in Java package names and as prefix in the iOS bundle identifier.'
+            'This string is used in Java package names and as prefix in the iOS bundle identifier.',
     );
     argParser.addOption(
       'project-name',
       defaultsTo: null,
-      help: 'The project name for this new Flutter project. This must be a valid dart package name.'
+      help: 'The project name for this new Flutter project. This must be a valid dart package name.',
     );
     argParser.addOption(
       'ios-language',
@@ -638,7 +638,7 @@
   'test',
   'utf',
   'watcher',
-  'yaml'
+  'yaml',
 ]);
 
 /// Return null if the project name is legal. Return a validation message if
diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart
index e0b8172..d6364b3 100644
--- a/packages/flutter_tools/lib/src/commands/daemon.dart
+++ b/packages/flutter_tools/lib/src/commands/daemon.dart
@@ -95,7 +95,7 @@
       onDone: () {
         if (!_onExitCompleter.isCompleted)
           _onExitCompleter.complete(0);
-      }
+      },
     );
   }
 
@@ -272,12 +272,12 @@
           sendEvent('daemon.logMessage', <String, dynamic>{
             'level': message.level,
             'message': message.message,
-            'stackTrace': message.stackTrace.toString()
+            'stackTrace': message.stackTrace.toString(),
           });
         } else {
           sendEvent('daemon.logMessage', <String, dynamic>{
             'level': message.level,
-            'message': message.message
+            'message': message.message,
           });
         }
       }
@@ -303,7 +303,7 @@
 
 typedef _RunOrAttach = Future<void> Function({
   Completer<DebugConnectionInfo> connectionInfoCompleter,
-  Completer<void> appStartedCompleter
+  Completer<void> appStartedCompleter,
 });
 
 /// This domain responds to methods like [start] and [stop].
@@ -910,12 +910,12 @@
         _sendLogEvent(<String, dynamic>{
           'log': message,
           'stackTrace': stackTrace.toString(),
-          'error': true
+          'error': true,
         });
       } else {
         _sendLogEvent(<String, dynamic>{
           'log': message,
-          'error': true
+          'error': true,
         });
       }
     }
diff --git a/packages/flutter_tools/lib/src/commands/drive.dart b/packages/flutter_tools/lib/src/commands/drive.dart
index 2179381..8b1c742 100644
--- a/packages/flutter_tools/lib/src/commands/drive.dart
+++ b/packages/flutter_tools/lib/src/commands/drive.dart
@@ -295,7 +295,7 @@
         '--packages=${PackageMap.globalPackagesPath}',
         '-rexpanded',
       ]),
-    environment: <String, String>{ 'VM_SERVICE_URL': observatoryUri }
+    environment: <String, String>{ 'VM_SERVICE_URL': observatoryUri },
   );
   if (result != 0)
     throwToolExit('Driver tests failed: $result', exitCode: result);
diff --git a/packages/flutter_tools/lib/src/commands/logs.dart b/packages/flutter_tools/lib/src/commands/logs.dart
index e3d3c2b..3e0ec00 100644
--- a/packages/flutter_tools/lib/src/commands/logs.dart
+++ b/packages/flutter_tools/lib/src/commands/logs.dart
@@ -16,7 +16,7 @@
     argParser.addFlag('clear',
       negatable: false,
       abbr: 'c',
-      help: 'Clear log history before reading from logs.'
+      help: 'Clear log history before reading from logs.',
     );
   }
 
@@ -57,7 +57,7 @@
       },
       onError: (dynamic error) {
         exitCompleter.complete(error is int ? error : 1);
-      }
+      },
     );
 
     // When terminating, close down the log reader.
diff --git a/packages/flutter_tools/lib/src/commands/packages.dart b/packages/flutter_tools/lib/src/commands/packages.dart
index ab4a247..befbe87 100644
--- a/packages/flutter_tools/lib/src/commands/packages.dart
+++ b/packages/flutter_tools/lib/src/commands/packages.dart
@@ -36,7 +36,7 @@
     requiresPubspecYaml();
     argParser.addFlag('offline',
       negatable: false,
-      help: 'Use cached packages instead of accessing the network.'
+      help: 'Use cached packages instead of accessing the network.',
     );
   }
 
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart
index 6c59ab07..c79a8a8 100644
--- a/packages/flutter_tools/lib/src/commands/run.dart
+++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -47,7 +47,7 @@
               'compiler up to that point. This file can be used in subsequent --dynamic builds '
               'to precompile some code by the offline compiler. '
               'This flag is only allowed when running as --dynamic --profile (recommended) or '
-              '--debug (may include unwanted debug symbols).'
+              '--debug (may include unwanted debug symbols).',
       )
       ..addOption('target-platform',
         defaultsTo: 'default',
@@ -424,7 +424,7 @@
         devices.length == 1
             ? getNameForTargetPlatform(await devices[0].targetPlatform)
             : 'multiple',
-        devices.length == 1 && await devices[0].isLocalEmulator ? 'emulator' : null
+        devices.length == 1 && await devices[0].isLocalEmulator ? 'emulator' : null,
       ],
       endTimeOverride: appStartedTime,
     );
diff --git a/packages/flutter_tools/lib/src/commands/upgrade.dart b/packages/flutter_tools/lib/src/commands/upgrade.dart
index f7240e0..6ba8ecd 100644
--- a/packages/flutter_tools/lib/src/commands/upgrade.dart
+++ b/packages/flutter_tools/lib/src/commands/upgrade.dart
@@ -31,7 +31,7 @@
   Future<FlutterCommandResult> runCommand() async {
     try {
       await runCheckedAsync(<String>[
-        'git', 'rev-parse', '@{u}'
+        'git', 'rev-parse', '@{u}',
       ], workingDirectory: Cache.flutterRoot);
     } catch (e) {
       throwToolExit('Unable to upgrade Flutter: no upstream repository configured.');
@@ -46,7 +46,7 @@
     int code = await runCommandAndStreamOutput(
       <String>['git', 'pull', '--ff-only'],
       workingDirectory: Cache.flutterRoot,
-      mapFunction: (String line) => matchesGitLine(line) ? null : line
+      mapFunction: (String line) => matchesGitLine(line) ? null : line,
     );
 
     if (code != 0)
@@ -63,7 +63,7 @@
         fs.path.join('bin', 'flutter'), '--no-color', '--no-version-check', 'precache',
       ],
       workingDirectory: Cache.flutterRoot,
-      allowReentrantFlutter: true
+      allowReentrantFlutter: true,
     );
 
     printStatus('');
diff --git a/packages/flutter_tools/lib/src/commands/version.dart b/packages/flutter_tools/lib/src/commands/version.dart
index 18b1f43..22564de 100644
--- a/packages/flutter_tools/lib/src/commands/version.dart
+++ b/packages/flutter_tools/lib/src/commands/version.dart
@@ -36,7 +36,7 @@
   Future<List<String>> getTags() async {
     final RunResult runResult = await runCheckedAsync(
       <String>['git', 'tag', '-l', 'v*'],
-      workingDirectory: Cache.flutterRoot
+      workingDirectory: Cache.flutterRoot,
     );
     return runResult.toString().split('\n');
   }
@@ -71,7 +71,7 @@
     try {
       await runCheckedAsync(
         <String>['git', 'checkout', 'v$version'],
-        workingDirectory: Cache.flutterRoot
+        workingDirectory: Cache.flutterRoot,
       );
     } catch (e) {
       throwToolExit('Unable to checkout version branch for version $version.');
@@ -107,7 +107,7 @@
         context: PubContext.pubUpgrade,
         directory: projectRoot,
         upgrade: true,
-        checkLastModified: false
+        checkLastModified: false,
       );
     }
 
diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart
index 1193a9a..dd255f5 100644
--- a/packages/flutter_tools/lib/src/compile.dart
+++ b/packages/flutter_tools/lib/src/compile.dart
@@ -324,7 +324,7 @@
     this.typeDefinitions,
     this.libraryUri,
     this.klass,
-    this.isStatic
+    this.isStatic,
   ) : super(completer);
 
   String expression;
@@ -440,7 +440,7 @@
       return _compile(
           _mapFilename(request.mainPath, packageUriMapper),
           request.outputPath,
-          _mapFilename(request.packagesFilePath ?? _packagesPath, /* packageUriMapper= */ null)
+          _mapFilename(request.packagesFilePath ?? _packagesPath, /* packageUriMapper= */ null),
       );
     }
 
diff --git a/packages/flutter_tools/lib/src/dart/analysis.dart b/packages/flutter_tools/lib/src/dart/analysis.dart
index 863d290..59376bb 100644
--- a/packages/flutter_tools/lib/src/dart/analysis.dart
+++ b/packages/flutter_tools/lib/src/dart/analysis.dart
@@ -54,7 +54,7 @@
     inStream.listen(_handleServerResponse);
 
     _sendCommand('server.setSubscriptions', <String, dynamic>{
-      'subscriptions': <String>['STATUS']
+      'subscriptions': <String>['STATUS'],
     });
 
     _sendCommand('analysis.setAnalysisRoots',
@@ -70,7 +70,7 @@
     final String message = json.encode(<String, dynamic>{
       'id': (++_id).toString(),
       'method': method,
-      'params': params
+      'params': params,
     });
     _process.stdin.writeln(message);
     printTrace('==> $message');
diff --git a/packages/flutter_tools/lib/src/dart/pub.dart b/packages/flutter_tools/lib/src/dart/pub.dart
index 4de54f8..2f1957b 100644
--- a/packages/flutter_tools/lib/src/dart/pub.dart
+++ b/packages/flutter_tools/lib/src/dart/pub.dart
@@ -75,7 +75,7 @@
   bool skipIfAbsent = false,
   bool upgrade = false,
   bool offline = false,
-  bool checkLastModified = true
+  bool checkLastModified = true,
 }) async {
   directory ??= fs.currentDirectory.path;
 
diff --git a/packages/flutter_tools/lib/src/devfs.dart b/packages/flutter_tools/lib/src/devfs.dart
index 66b473a..05e9292 100644
--- a/packages/flutter_tools/lib/src/devfs.dart
+++ b/packages/flutter_tools/lib/src/devfs.dart
@@ -254,7 +254,7 @@
         params: <String, dynamic> {
           'fsName': fsName,
           'uri': deviceUri.toString(),
-          'fileContents': fileContents
+          'fileContents': fileContents,
         },
       );
     } catch (error) {
@@ -384,7 +384,7 @@
     VMService serviceProtocol,
     this.fsName,
     this.rootDirectory, {
-    String packagesFilePath
+    String packagesFilePath,
   }) : _operations = ServiceProtocolDevFSOperations(serviceProtocol),
        _httpWriter = _DevFSHttpWriter(fsName, serviceProtocol) {
     _packagesFilePath =
diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart
index b65819d..be1475f 100644
--- a/packages/flutter_tools/lib/src/doctor.dart
+++ b/packages/flutter_tools/lib/src/doctor.dart
@@ -467,7 +467,7 @@
     }
 
     return ValidationResult(valid, messages,
-      statusInfo: userMessages.flutterStatusInfo(version.channel, version.frameworkVersion, os.name, platform.localeName)
+      statusInfo: userMessages.flutterStatusInfo(version.channel, version.frameworkVersion, os.name, platform.localeName),
     );
   }
 }
diff --git a/packages/flutter_tools/lib/src/emulator.dart b/packages/flutter_tools/lib/src/emulator.dart
index 3672d44..61f0c34 100644
--- a/packages/flutter_tools/lib/src/emulator.dart
+++ b/packages/flutter_tools/lib/src/emulator.dart
@@ -115,7 +115,7 @@
       'avd',
       '-n', name,
       '-k', sdkId,
-      '-d', device
+      '-d', device,
     ];
     final ProcessResult runResult = processManager.runSync(args,
         environment: androidSdk?.sdkManagerEnv);
@@ -136,7 +136,7 @@
       getAvdManagerPath(androidSdk),
       'list',
       'device',
-      '-c'
+      '-c',
     ];
     final ProcessResult runResult = processManager.runSync(args,
         environment: androidSdk?.sdkManagerEnv);
diff --git a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
index bb27e0c..ffbe9dd 100644
--- a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
+++ b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
@@ -403,7 +403,7 @@
     // for more explanation.
     final List<String> command = <String>[
       'ssh', '-6', '-F', fuchsiaArtifacts.sshConfig.absolute.path, '-nNT', '-vvv', '-f',
-      '-L', '$hostPort:$_ipv4Loopback:$devicePort', device.id, 'true'
+      '-L', '$hostPort:$_ipv4Loopback:$devicePort', device.id, 'true',
     ];
     final Process process = await processManager.start(command);
     unawaited(process.exitCode.then((int exitCode) {
diff --git a/packages/flutter_tools/lib/src/ios/code_signing.dart b/packages/flutter_tools/lib/src/ios/code_signing.dart
index a29a97e..5bda757 100644
--- a/packages/flutter_tools/lib/src/ios/code_signing.dart
+++ b/packages/flutter_tools/lib/src/ios/code_signing.dart
@@ -94,7 +94,7 @@
 /// project has a development team set in the project's build settings.
 Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({
   BuildableIOSApp iosApp,
-  bool usesTerminalUi = true
+  bool usesTerminalUi = true,
 }) async{
   final Map<String, String> buildSettings = iosApp.project.buildSettings;
   if (buildSettings == null)
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart
index c4e092e..bc0e5ae 100644
--- a/packages/flutter_tools/lib/src/ios/devices.dart
+++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -166,7 +166,7 @@
 
   static String _checkForCommand(
     String command, [
-    String macInstructions = _kIdeviceinstallerInstructions
+    String macInstructions = _kIdeviceinstallerInstructions,
   ]) {
     try {
       command = runCheckedSync(<String>['which', command]).trim();
@@ -253,7 +253,7 @@
           targetOverride: mainPath,
           buildForDevice: true,
           usesTerminalUi: usesTerminalUi,
-          activeArch: iosArch
+          activeArch: iosArch,
       );
       if (!buildResult.success) {
         printError('Could not build the precompiled application for the device.');
@@ -459,7 +459,7 @@
   _IOSDeviceLogReader(this.device, ApplicationPackage app) {
     _linesController = StreamController<String>.broadcast(
       onListen: _start,
-      onCancel: _stop
+      onCancel: _stop,
     );
 
     // Match for lines for the runner in syslog.
diff --git a/packages/flutter_tools/lib/src/ios/ios_workflow.dart b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
index 98b4ef6..4ae1173 100644
--- a/packages/flutter_tools/lib/src/ios/ios_workflow.dart
+++ b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
@@ -157,7 +157,7 @@
     return ValidationResult(
         <ValidationType>[xcodeStatus, packageManagerStatus].reduce(_mergeValidationTypes),
         messages,
-        statusInfo: xcodeVersionInfo
+        statusInfo: xcodeVersionInfo,
     );
   }
 
diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart
index 1468f09..648547e 100644
--- a/packages/flutter_tools/lib/src/ios/mac.dart
+++ b/packages/flutter_tools/lib/src/ios/mac.dart
@@ -388,7 +388,7 @@
       iosProject: project.ios,
       iosEngineDir: flutterFrameworkDir(buildInfo.mode),
       isSwift: project.ios.isSwift,
-      dependenciesChanged: !await fingerprinter.doesFingerprintMatch()
+      dependenciesChanged: !await fingerprinter.doesFingerprintMatch(),
     );
     if (didPodInstall)
       await fingerprinter.writeFingerprint();
@@ -449,7 +449,7 @@
       <String>[
         'CODE_SIGNING_ALLOWED=NO',
         'CODE_SIGNING_REQUIRED=NO',
-        'CODE_SIGNING_IDENTITY=""'
+        'CODE_SIGNING_IDENTITY=""',
       ]
     );
   }
@@ -499,7 +499,7 @@
   final RunResult buildResult = await runAsync(
     buildCommands,
     workingDirectory: app.project.hostAppRoot.path,
-    allowReentrantFlutter: true
+    allowReentrantFlutter: true,
   );
   // Notifies listener that no more output is coming.
   scriptOutputPipeFile?.writeAsStringSync('all done');
@@ -720,7 +720,7 @@
     'name': service['name'],
     // Since we have already moved it to the Frameworks directory. Strip away
     // the directory and basenames.
-    'framework': fs.path.basenameWithoutExtension(service['ios-framework'])
+    'framework': fs.path.basenameWithoutExtension(service['ios-framework']),
   }).toList();
   final Map<String, dynamic> jsonObject = <String, dynamic>{ 'services' : jsonServices };
   manifest.writeAsStringSync(json.encode(jsonObject), mode: FileMode.write, flush: true);
diff --git a/packages/flutter_tools/lib/src/ios/plist_utils.dart b/packages/flutter_tools/lib/src/ios/plist_utils.dart
index 31bb934..2b3b75c 100644
--- a/packages/flutter_tools/lib/src/ios/plist_utils.dart
+++ b/packages/flutter_tools/lib/src/ios/plist_utils.dart
@@ -27,7 +27,7 @@
 
   try {
     final List<String> args = <String>[
-      executable, 'read', normalizedPlistPath
+      executable, 'read', normalizedPlistPath,
     ];
     if (key != null && key.isNotEmpty){
       args.add(key);
diff --git a/packages/flutter_tools/lib/src/ios/simulators.dart b/packages/flutter_tools/lib/src/ios/simulators.dart
index 525a1da..f521871 100644
--- a/packages/flutter_tools/lib/src/ios/simulators.dart
+++ b/packages/flutter_tools/lib/src/ios/simulators.dart
@@ -322,7 +322,7 @@
       if (debuggingOptions.buildInfo.isDebug)
         args.addAll(<String>[
           '--enable-checked-mode',
-          '--verify-entry-points'
+          '--verify-entry-points',
         ]);
       if (debuggingOptions.startPaused)
         args.add('--start-paused');
@@ -500,7 +500,7 @@
   _IOSSimulatorLogReader(this.device, IOSApp app) {
     _linesController = StreamController<String>.broadcast(
       onListen: _start,
-      onCancel: _stop
+      onCancel: _stop,
     );
     _appName = app == null ? null : app.name.replaceAll('.app', '');
   }
diff --git a/packages/flutter_tools/lib/src/ios/xcodeproj.dart b/packages/flutter_tools/lib/src/ios/xcodeproj.dart
index 0a32c7f..1f0e0a4 100644
--- a/packages/flutter_tools/lib/src/ios/xcodeproj.dart
+++ b/packages/flutter_tools/lib/src/ios/xcodeproj.dart
@@ -156,7 +156,7 @@
       fs.path.absolute(projectPath),
       '-target',
       target,
-      '-showBuildSettings'
+      '-showBuildSettings',
     ], workingDirectory: projectPath);
     return parseXcodeBuildSettings(out);
   }
diff --git a/packages/flutter_tools/lib/src/linux/linux_device.dart b/packages/flutter_tools/lib/src/linux/linux_device.dart
index c9c991a..316b116 100644
--- a/packages/flutter_tools/lib/src/linux/linux_device.dart
+++ b/packages/flutter_tools/lib/src/linux/linux_device.dart
@@ -93,7 +93,7 @@
       return const <Device>[];
     }
     return <Device>[
-      LinuxDevice()
+      LinuxDevice(),
     ];
   }
 
diff --git a/packages/flutter_tools/lib/src/macos/macos_device.dart b/packages/flutter_tools/lib/src/macos/macos_device.dart
index ac4c7bf..35cad44 100644
--- a/packages/flutter_tools/lib/src/macos/macos_device.dart
+++ b/packages/flutter_tools/lib/src/macos/macos_device.dart
@@ -110,7 +110,7 @@
         }
         final String pid = values[1];
         final ProcessResult killResult = await processManager.run(<String>[
-          'kill', pid
+          'kill', pid,
         ]);
         succeeded &= killResult.exitCode == 0;
       }
@@ -145,7 +145,7 @@
       return const <Device>[];
     }
     return <Device>[
-      MacOSDevice()
+      MacOSDevice(),
     ];
   }
 
diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart
index b2a0fde..91a0ef8 100644
--- a/packages/flutter_tools/lib/src/project.dart
+++ b/packages/flutter_tools/lib/src/project.dart
@@ -332,7 +332,7 @@
       target,
       <String, dynamic>{
         'projectName': parent.manifest.appName,
-        'iosIdentifier': parent.manifest.iosBundleIdentifier
+        'iosIdentifier': parent.manifest.iosBundleIdentifier,
       },
       printStatusWhenWriting: false,
       overwriteExisting: true,
diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart
index 2addb59..982ca22 100644
--- a/packages/flutter_tools/lib/src/resident_runner.dart
+++ b/packages/flutter_tools/lib/src/resident_runner.dart
@@ -144,21 +144,21 @@
   Future<Uri> setupDevFS(
     String fsName,
     Directory rootDirectory, {
-    String packagesFilePath
+    String packagesFilePath,
   }) {
     // One devFS per device. Shared by all running instances.
     devFS = DevFS(
       vmServices[0],
       fsName,
       rootDirectory,
-      packagesFilePath: packagesFilePath
+      packagesFilePath: packagesFilePath,
     );
     return devFS.create();
   }
 
   List<Future<Map<String, dynamic>>> reloadSources(
     String entryPath, {
-    bool pause = false
+    bool pause = false,
   }) {
     final Uri deviceEntryUri = devFS.baseUri.resolveUri(fs.path.toUri(entryPath));
     final Uri devicePackagesUri = devFS.baseUri.resolve('.packages');
@@ -167,7 +167,7 @@
       final Future<Map<String, dynamic>> report = view.uiIsolate.reloadSources(
         pause: pause,
         rootLibUri: deviceEntryUri,
-        packagesUri: devicePackagesUri
+        packagesUri: devicePackagesUri,
       );
       reports.add(report);
     }
@@ -289,7 +289,7 @@
     final TargetPlatform targetPlatform = await device.targetPlatform;
     package = await ApplicationPackageFactory.instance.getPackageForPlatform(
       targetPlatform,
-      applicationBinary: hotRunner.applicationBinary
+      applicationBinary: hotRunner.applicationBinary,
     );
 
     if (package == null) {
@@ -343,7 +343,7 @@
     final TargetPlatform targetPlatform = await device.targetPlatform;
     package = await ApplicationPackageFactory.instance.getPackageForPlatform(
       targetPlatform,
-      applicationBinary: coldRunner.applicationBinary
+      applicationBinary: coldRunner.applicationBinary,
     );
 
     final String modeName = coldRunner.debuggingOptions.buildInfo.friendlyModeName;
@@ -427,7 +427,7 @@
         dillOutputPath: dillOutputPath,
         trackWidgetCreation: trackWidgetCreation,
         projectRootPath: projectRootPath,
-        pathToReload: pathToReload
+        pathToReload: pathToReload,
       );
     } on DevFSException {
       devFSStatus.cancel();
@@ -751,7 +751,7 @@
         // futures either because they just print to logger and is not critical.
         unawaited(service.done.then<void>(
           _serviceProtocolDone,
-          onError: _serviceProtocolError
+          onError: _serviceProtocolError,
         ).whenComplete(_serviceDisconnected));
       }
     }
diff --git a/packages/flutter_tools/lib/src/run_cold.dart b/packages/flutter_tools/lib/src/run_cold.dart
index 87b6213..a6ef97a 100644
--- a/packages/flutter_tools/lib/src/run_cold.dart
+++ b/packages/flutter_tools/lib/src/run_cold.dart
@@ -44,7 +44,7 @@
     Completer<DebugConnectionInfo> connectionInfoCompleter,
     Completer<void> appStartedCompleter,
     String route,
-    bool shouldBuild = true
+    bool shouldBuild = true,
   }) async {
     final bool prebuiltMode = applicationBinary != null;
     if (!prebuiltMode) {
diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart
index cae7e4f..53a4f36 100644
--- a/packages/flutter_tools/lib/src/run_hot.dart
+++ b/packages/flutter_tools/lib/src/run_hot.dart
@@ -217,7 +217,7 @@
           DebugConnectionInfo(
             httpUri: flutterDevices.first.observatoryUris.first,
             wsUri: flutterDevices.first.vmServices.first.wsAddress,
-            baseUri: baseUris.first.toString()
+            baseUri: baseUris.first.toString(),
           )
         );
       }
@@ -286,7 +286,7 @@
     Completer<DebugConnectionInfo> connectionInfoCompleter,
     Completer<void> appStartedCompleter,
     String route,
-    bool shouldBuild = true
+    bool shouldBuild = true,
   }) async {
     if (!fs.isFileSync(mainPath)) {
       String message = 'Tried to run $mainPath, but that file does not exist.';
@@ -356,7 +356,7 @@
       final Uri uri = await device.setupDevFS(
         fsName,
         fs.directory(projectRootPath),
-        packagesFilePath: packagesFilePath
+        packagesFilePath: packagesFilePath,
       );
       devFSUris.add(uri);
     }
@@ -700,7 +700,7 @@
         final Completer<DeviceReloadReport> completer = Completer<DeviceReloadReport>();
         allReportsFutures.add(completer.future);
         final List<Future<Map<String, dynamic>>> reportFutures = device.reloadSources(
-          entryPath, pause: pause
+          entryPath, pause: pause,
         );
         unawaited(Future.wait(reportFutures).then(
           (List<Map<String, dynamic>> reports) async {
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart
index a92cb7e..2d93bfb 100644
--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart
+++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart
@@ -168,7 +168,7 @@
   void usesPortOptions() {
     argParser.addOption(observatoryPortOption,
         help: 'Listen to the given port for an observatory debugger connection.\n'
-              'Specifying port 0 (the default) will find a random free port.'
+              'Specifying port 0 (the default) will find a random free port.',
     );
     _usesPortOption = true;
   }
@@ -253,14 +253,14 @@
         help: 'Filename of Dart compilation trace file. This file will be produced\n'
               'by \'flutter run --dynamic --profile --train\' and consumed by subsequent\n'
               '--dynamic builds such as \'flutter build apk --dynamic\' to precompile\n'
-              'some code by the offline compiler.'
+              'some code by the offline compiler.',
     );
     argParser.addFlag('patch',
         hide: !verboseHelp,
         negatable: false,
         help: 'Generate dynamic patch for current changes from baseline.\n'
               'Dynamic patch is generated relative to baseline package.\n'
-              'This flag is only allowed when using --dynamic.\n'
+              'This flag is only allowed when using --dynamic.\n',
     );
   }
 
@@ -273,7 +273,7 @@
               'This optional setting allows several dynamic patches to coexist\n'
               'for same baseline build, and is useful for canary and A-B testing\n'
               'of dynamic patches.\n'
-              'This flag is only used when --dynamic --patch is specified.\n'
+              'This flag is only used when --dynamic --patch is specified.\n',
     );
     argParser.addOption('patch-dir',
         defaultsTo: 'public',
@@ -281,7 +281,7 @@
         help: 'The directory where to store generated dynamic patches.\n'
               'This directory can be deployed to a CDN such as Firebase Hosting.\n'
               'It is recommended to store this directory in version control.\n'
-              'This flag is only used when --dynamic --patch is specified.\n'
+              'This flag is only used when --dynamic --patch is specified.\n',
     );
     argParser.addFlag('baseline',
         hide: !verboseHelp,
@@ -289,7 +289,7 @@
         help: 'Save built package as baseline for future dynamic patching.\n'
             'Built package, such as APK file on Android, is saved and '
             'can be used to generate dynamic patches in later builds.\n'
-            'This flag is only allowed when using --dynamic.\n'
+            'This flag is only allowed when using --dynamic.\n',
     );
 
     addDynamicBaselineFlags(verboseHelp: verboseHelp);
@@ -301,7 +301,7 @@
         hide: !verboseHelp,
         help: 'The directory where to store and find generated baseline packages.\n'
               'It is recommended to store this directory in version control.\n'
-              'This flag is only used when --dynamic --baseline is specified.\n'
+              'This flag is only used when --dynamic --baseline is specified.\n',
     );
   }
 
@@ -359,7 +359,7 @@
       'flavor',
       help: 'Build a custom app flavor as defined by platform-specific build setup.\n'
         'Supports the use of product flavors in Android Gradle scripts.\n'
-        'Supports the use of custom Xcode schemes.'
+        'Supports the use of custom Xcode schemes.',
     );
   }
 
diff --git a/packages/flutter_tools/lib/src/services.dart b/packages/flutter_tools/lib/src/services.dart
index 2eb5560..1a71757 100644
--- a/packages/flutter_tools/lib/src/services.dart
+++ b/packages/flutter_tools/lib/src/services.dart
@@ -64,7 +64,7 @@
         'root': serviceRoot,
         'name': service['name'],
         'android-class': service['android-class'],
-        'ios-framework': service['ios-framework']
+        'ios-framework': service['ios-framework'],
       });
     }
 
@@ -102,7 +102,7 @@
   final List<Map<String, String>> services =
       servicesIn.map<Map<String, String>>((Map<String, String> service) => <String, String>{
         'name': service['name'],
-        'class': service['android-class']
+        'class': service['android-class'],
       }).toList();
 
   final Map<String, dynamic> jsonObject = <String, dynamic>{ 'services': services };
diff --git a/packages/flutter_tools/lib/src/test/flutter_platform.dart b/packages/flutter_tools/lib/src/test/flutter_platform.dart
index 451cf1a..a17c008 100644
--- a/packages/flutter_tools/lib/src/test/flutter_platform.dart
+++ b/packages/flutter_tools/lib/src/test/flutter_platform.dart
@@ -963,7 +963,7 @@
     const String observatoryString = 'Observatory listening on ';
     for (Stream<List<int>> stream in <Stream<List<int>>>[
       process.stderr,
-      process.stdout
+      process.stdout,
     ]) {
       stream
           .transform<String>(utf8.decoder)
diff --git a/packages/flutter_tools/lib/src/tracing.dart b/packages/flutter_tools/lib/src/tracing.dart
index 485fb30..a4559f8 100644
--- a/packages/flutter_tools/lib/src/tracing.dart
+++ b/packages/flutter_tools/lib/src/tracing.dart
@@ -35,7 +35,7 @@
 
   /// Stops tracing; optionally wait for first frame.
   Future<Map<String, dynamic>> stopTracingAndDownloadTimeline({
-    bool awaitFirstFrame = false
+    bool awaitFirstFrame = false,
   }) async {
     if (awaitFirstFrame) {
       final Status status = logger.startProgress(
@@ -96,7 +96,7 @@
     final List<Map<String, dynamic>> events =
         List<Map<String, dynamic>>.from(timeline['traceEvents']);
     final Map<String, dynamic> event = events.firstWhere(
-      (Map<String, dynamic> event) => event['name'] == eventName, orElse: () => null
+      (Map<String, dynamic> event) => event['name'] == eventName, orElse: () => null,
     );
     return event == null ? null : event['ts'];
   }
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart
index 9fe973e4a..f0d69eb 100644
--- a/packages/flutter_tools/lib/src/vmservice.dart
+++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -206,7 +206,7 @@
 
       _peer.sendNotification('_registerService', <String, String>{
         'service': 'compileExpression',
-        'alias': 'Flutter Tools'
+        'alias': 'Flutter Tools',
       });
     }
   }
@@ -885,7 +885,7 @@
   Future<Map<String, dynamic>> writeDevFSFile(
     String fsName, {
     @required String path,
-    @required List<int> fileContents
+    @required List<int> fileContents,
   }) {
     assert(path != null);
     assert(fileContents != null);
@@ -932,7 +932,7 @@
         'viewId': viewId,
         'mainScript': main.toString(),
         'packagesFile': packages.toString(),
-        'assetDirectory': assetsDirectory.toString()
+        'assetDirectory': assetsDirectory.toString(),
     });
   }
 
@@ -1109,7 +1109,7 @@
     // Inject the 'isolateId' parameter.
     if (params == null) {
       params = <String, dynamic>{
-        'isolateId': id
+        'isolateId': id,
       };
     } else {
       params['isolateId'] = id;
@@ -1154,7 +1154,7 @@
   }) async {
     try {
       final Map<String, dynamic> arguments = <String, dynamic>{
-        'pause': pause
+        'pause': pause,
       };
       if (rootLibUri != null) {
         arguments['rootLibUri'] = rootLibUri.toString();
@@ -1311,7 +1311,7 @@
       'ext.flutter.evict',
       params: <String, dynamic>{
         'value': assetPath,
-      }
+      },
     );
   }
 
@@ -1451,7 +1451,7 @@
         params: <String, dynamic>{
           'isolateId': _uiIsolate.id,
           'viewId': id,
-          'assetDirectory': assetsDirectory.toFilePath(windows: false)
+          'assetDirectory': assetsDirectory.toFilePath(windows: false),
         });
   }
 
diff --git a/packages/flutter_tools/lib/src/vscode/vscode.dart b/packages/flutter_tools/lib/src/vscode/vscode.dart
index 94c9a04..f2fac47 100644
--- a/packages/flutter_tools/lib/src/vscode/vscode.dart
+++ b/packages/flutter_tools/lib/src/vscode/vscode.dart
@@ -121,7 +121,7 @@
         fs.path.join(homeDirPath, 'Applications', 'Visual Studio Code - Insiders.app', 'Contents'),
         '.vscode-insiders',
         isInsiders: true,
-      )
+      ),
     ]);
   }
 
diff --git a/packages/flutter_tools/lib/src/windows/windows_device.dart b/packages/flutter_tools/lib/src/windows/windows_device.dart
index 005e100..5698952 100644
--- a/packages/flutter_tools/lib/src/windows/windows_device.dart
+++ b/packages/flutter_tools/lib/src/windows/windows_device.dart
@@ -93,7 +93,7 @@
       return const <Device>[];
     }
     return <Device>[
-      WindowsDevice()
+      WindowsDevice(),
     ];
   }
 
