apply lint prefer_void_to_null in dev/ (#22661)

diff --git a/dev/automated_tests/flutter_test/exception_handling_test.dart b/dev/automated_tests/flutter_test/exception_handling_test.dart
index c9f9c42..b33d57b 100644
--- a/dev/automated_tests/flutter_test/exception_handling_test.dart
+++ b/dev/automated_tests/flutter_test/exception_handling_test.dart
@@ -13,6 +13,6 @@
     throw FlutterError('Who lives, who dies, who tells your story?');
   });
   testWidgets('Exception handling in test harness - uncaught Future error', (WidgetTester tester) async {
-    Future<Null>.error('Who lives, who dies, who tells your story?');
+    Future<void>.error('Who lives, who dies, who tells your story?');
   });
 }
diff --git a/dev/automated_tests/flutter_test/test_async_utils_guarded_test.dart b/dev/automated_tests/flutter_test/test_async_utils_guarded_test.dart
index ca842db..431c90a 100644
--- a/dev/automated_tests/flutter_test/test_async_utils_guarded_test.dart
+++ b/dev/automated_tests/flutter_test/test_async_utils_guarded_test.dart
@@ -12,7 +12,7 @@
   static void testPrint(String message, { int wrapWidth }) { print(message); }
 }
 
-Future<Null> guardedHelper(WidgetTester tester) {
+Future<void> guardedHelper(WidgetTester tester) {
   return TestAsyncUtils.guard(() async {
     await tester.pumpWidget(const Text('Hello', textDirection: TextDirection.ltr));
   });
diff --git a/dev/automated_tests/flutter_test/test_async_utils_unguarded_test.dart b/dev/automated_tests/flutter_test/test_async_utils_unguarded_test.dart
index 29caf7b..d16ef27 100644
--- a/dev/automated_tests/flutter_test/test_async_utils_unguarded_test.dart
+++ b/dev/automated_tests/flutter_test/test_async_utils_unguarded_test.dart
@@ -11,7 +11,7 @@
   static void testPrint(String message, { int wrapWidth }) { print(message); }
 }
 
-Future<Null> helperFunction(WidgetTester tester) async {
+Future<void> helperFunction(WidgetTester tester) async {
   await tester.pump();
 }
 
diff --git a/dev/benchmarks/complex_layout/test_driver/scroll_perf_test.dart b/dev/benchmarks/complex_layout/test_driver/scroll_perf_test.dart
index b6a5c6f..39f3438 100644
--- a/dev/benchmarks/complex_layout/test_driver/scroll_perf_test.dart
+++ b/dev/benchmarks/complex_layout/test_driver/scroll_perf_test.dart
@@ -20,12 +20,12 @@
         driver.close();
     });
 
-    Future<Null> testScrollPerf(String listKey, String summaryName) async {
+    Future<void> testScrollPerf(String listKey, String summaryName) async {
       // The slight initial delay avoids starting the timing during a
       // period of increased load on the device. Without this delay, the
       // benchmark has greater noise.
       // See: https://github.com/flutter/flutter/issues/19434
-      await Future<Null>.delayed(const Duration(milliseconds: 250));
+      await Future<void>.delayed(const Duration(milliseconds: 250));
       final Timeline timeline = await driver.traceAction(() async {
         // Find the scrollable stock list
         final SerializableFinder list = find.byValueKey(listKey);
@@ -34,13 +34,13 @@
         // Scroll down
         for (int i = 0; i < 5; i += 1) {
           await driver.scroll(list, 0.0, -300.0, const Duration(milliseconds: 300));
-          await Future<Null>.delayed(const Duration(milliseconds: 500));
+          await Future<void>.delayed(const Duration(milliseconds: 500));
         }
 
         // Scroll up
         for (int i = 0; i < 5; i += 1) {
           await driver.scroll(list, 0.0, 300.0, const Duration(milliseconds: 300));
-          await Future<Null>.delayed(const Duration(milliseconds: 500));
+          await Future<void>.delayed(const Duration(milliseconds: 500));
         }
       });
 
diff --git a/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart b/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart
index 9ea504e..dd2023b 100644
--- a/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart
+++ b/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart
@@ -25,7 +25,7 @@
 
     test('inital tree creation', () async {
       // Let app become fully idle.
-      await Future<Null>.delayed(const Duration(seconds: 2));
+      await Future<void>.delayed(const Duration(seconds: 2));
 
       final Timeline timeline = await driver.traceAction(() async {
         expect(await driver.setSemantics(true), isTrue);
diff --git a/dev/benchmarks/complex_layout/test_memory/scroll_perf.dart b/dev/benchmarks/complex_layout/test_memory/scroll_perf.dart
index 98d2aeb..832a6db 100644
--- a/dev/benchmarks/complex_layout/test_memory/scroll_perf.dart
+++ b/dev/benchmarks/complex_layout/test_memory/scroll_perf.dart
@@ -37,7 +37,7 @@
   /// Wait 50ms to allow the GPU thread to actually put up the frame. (The
   /// endOfFrame future ends when we send the data to the engine, before the GPU
   /// thread has had a chance to rasterize, etc.)
-  await Future<Null>.delayed(const Duration(milliseconds: 50));
+  await Future<void>.delayed(const Duration(milliseconds: 50));
   debugPrint('==== MEMORY BENCHMARK ==== READY ====');
 
   await ready.future; // waits for tap sent by devicelab task
@@ -58,14 +58,14 @@
   for (int iteration = 0; iteration < maxIterations; iteration += 1) {
     debugPrint('Scroll down... $iteration/$maxIterations');
     await controller.fling(find.byType(ListView), const Offset(0.0, -700.0), speed);
-    await Future<Null>.delayed(pauses);
+    await Future<void>.delayed(pauses);
   }
 
   // Scroll up
   for (int iteration = 0; iteration < maxIterations; iteration += 1) {
     debugPrint('Scroll up... $iteration/$maxIterations');
     await controller.fling(find.byType(ListView), const Offset(0.0, 300.0), speed);
-    await Future<Null>.delayed(pauses);
+    await Future<void>.delayed(pauses);
   }
 
   debugPrint('==== MEMORY BENCHMARK ==== DONE ====');
diff --git a/dev/benchmarks/microbenchmarks/lib/stocks/animation_bench.dart b/dev/benchmarks/microbenchmarks/lib/stocks/animation_bench.dart
index 566359a..9937e9b 100644
--- a/dev/benchmarks/microbenchmarks/lib/stocks/animation_bench.dart
+++ b/dev/benchmarks/microbenchmarks/lib/stocks/animation_bench.dart
@@ -33,7 +33,7 @@
   }
 }
 
-Future<Null> main() async {
+Future<void> main() async {
   assert(false); // don't run this in checked mode! Use --release.
   stock_data.StockData.actuallyFetchData = false;
 
diff --git a/dev/benchmarks/microbenchmarks/lib/stocks/build_bench.dart b/dev/benchmarks/microbenchmarks/lib/stocks/build_bench.dart
index a579510..ac07a8c 100644
--- a/dev/benchmarks/microbenchmarks/lib/stocks/build_bench.dart
+++ b/dev/benchmarks/microbenchmarks/lib/stocks/build_bench.dart
@@ -15,7 +15,7 @@
 
 const Duration kBenchmarkTime = Duration(seconds: 15);
 
-Future<Null> main() async {
+Future<void> main() async {
   assert(false); // don't run this in checked mode! Use --release.
   stock_data.StockData.actuallyFetchData = false;
 
diff --git a/dev/benchmarks/microbenchmarks/lib/stocks/layout_bench.dart b/dev/benchmarks/microbenchmarks/lib/stocks/layout_bench.dart
index fe9c1c0..ea2bf97 100644
--- a/dev/benchmarks/microbenchmarks/lib/stocks/layout_bench.dart
+++ b/dev/benchmarks/microbenchmarks/lib/stocks/layout_bench.dart
@@ -15,7 +15,7 @@
 
 const Duration kBenchmarkTime = Duration(seconds: 15);
 
-Future<Null> main() async {
+Future<void> main() async {
   stock_data.StockData.actuallyFetchData = false;
 
   // We control the framePolicy below to prevent us from scheduling frames in
diff --git a/dev/bots/analyze-sample-code.dart b/dev/bots/analyze-sample-code.dart
index e4e643a..4b23b82 100644
--- a/dev/bots/analyze-sample-code.dart
+++ b/dev/bots/analyze-sample-code.dart
@@ -99,7 +99,7 @@
 const String kDartDocPrefix = '///';
 const String kDartDocPrefixWithSpace = '$kDartDocPrefix ';
 
-Future<Null> main(List<String> arguments) async {
+Future<void> main(List<String> arguments) async {
   final Directory tempDir = Directory.systemTemp.createTempSync('flutter_analyze_sample_code.');
   int exitCode = 1;
   bool keepMain = false;
diff --git a/dev/bots/analyze.dart b/dev/bots/analyze.dart
index 20b70d9..1b911ef 100644
--- a/dev/bots/analyze.dart
+++ b/dev/bots/analyze.dart
@@ -11,8 +11,6 @@
 
 import 'run_command.dart';
 
-typedef ShardRunner = Future<Null> Function();
-
 final String flutterRoot = path.dirname(path.dirname(path.dirname(path.fromUri(Platform.script))));
 final String flutter = path.join(flutterRoot, 'bin', Platform.isWindows ? 'flutter.bat' : 'flutter');
 final String dart = path.join(flutterRoot, 'bin', 'cache', 'dart-sdk', 'bin', Platform.isWindows ? 'dart.exe' : 'dart');
@@ -25,7 +23,7 @@
 ///
 /// For example:
 /// bin/cache/dart-sdk/bin/dart dev/bots/analyze.dart --dart-sdk=/tmp/dart-sdk
-Future<Null> main(List<String> args) async {
+Future<void> main(List<String> args) async {
   await _verifyNoTestPackageImports(flutterRoot);
   await _verifyGeneratedPluginRegistrants(flutterRoot);
   await _verifyNoBadImportsInFlutter(flutterRoot);
@@ -84,7 +82,7 @@
   print('${bold}DONE: Analysis successful.$reset');
 }
 
-Future<Null> _verifyInternationalizations() async {
+Future<void> _verifyInternationalizations() async {
   final EvalResult genResult = await _evalCommand(
     dart,
     <String>[
@@ -134,7 +132,7 @@
 }
 
 
-Future<Null> _checkForTrailingSpaces() async {
+Future<void> _checkForTrailingSpaces() async {
   if (!Platform.isWindows) {
     final String commitRange = Platform.environment.containsKey('TEST_COMMIT_RANGE')
         ? Platform.environment['TEST_COMMIT_RANGE']
@@ -229,7 +227,7 @@
   return result;
 }
 
-Future<Null> _runFlutterAnalyze(String workingDirectory, {
+Future<void> _runFlutterAnalyze(String workingDirectory, {
   List<String> options = const <String>[]
 }) {
   return runCommand(flutter, <String>['analyze']..addAll(options),
@@ -237,7 +235,7 @@
   );
 }
 
-Future<Null> _verifyNoTestPackageImports(String workingDirectory) async {
+Future<void> _verifyNoTestPackageImports(String workingDirectory) async {
   // TODO(ianh): Remove this whole test once https://github.com/dart-lang/matcher/issues/98 is fixed.
   final List<String> shims = <String>[];
   final List<String> errors = Directory(workingDirectory)
@@ -315,7 +313,7 @@
   }
 }
 
-Future<Null> _verifyNoBadImportsInFlutter(String workingDirectory) async {
+Future<void> _verifyNoBadImportsInFlutter(String workingDirectory) async {
   final List<String> errors = <String>[];
   final String libPath = path.join(workingDirectory, 'packages', 'flutter', 'lib');
   final String srcPath = path.join(workingDirectory, 'packages', 'flutter', 'lib', 'src');
@@ -439,7 +437,7 @@
   return null;
 }
 
-Future<Null> _verifyNoBadImportsInFlutterTools(String workingDirectory) async {
+Future<void> _verifyNoBadImportsInFlutterTools(String workingDirectory) async {
   final List<String> errors = <String>[];
   for (FileSystemEntity entity in Directory(path.join(workingDirectory, 'packages', 'flutter_tools', 'lib'))
     .listSync(recursive: true)
@@ -463,7 +461,7 @@
   }
 }
 
-Future<Null> _verifyGeneratedPluginRegistrants(String flutterRoot) async {
+Future<void> _verifyGeneratedPluginRegistrants(String flutterRoot) async {
   final Directory flutterRootDir = Directory(flutterRoot);
 
   final Map<String, List<File>> packageToRegistrants = <String, List<File>>{};
diff --git a/dev/bots/prepare_package.dart b/dev/bots/prepare_package.dart
index 116018e..ec7f52f 100644
--- a/dev/bots/prepare_package.dart
+++ b/dev/bots/prepare_package.dart
@@ -119,8 +119,8 @@
       stderr.write('Running "${commandLine.join(' ')}" in ${workingDirectory.path}.\n');
     }
     final List<int> output = <int>[];
-    final Completer<Null> stdoutComplete = Completer<Null>();
-    final Completer<Null> stderrComplete = Completer<Null>();
+    final Completer<void> stdoutComplete = Completer<void>();
+    final Completer<void> stderrComplete = Completer<void>();
     Process process;
     Future<int> allComplete() async {
       await stderrComplete.future;
@@ -291,7 +291,7 @@
 
   /// Clone the Flutter repo and make sure that the git environment is sane
   /// for when the user will unpack it.
-  Future<Null> _checkoutFlutter() async {
+  Future<void> _checkoutFlutter() async {
     // We want the user to start out the in the specified branch instead of a
     // detached head. To do that, we need to make sure the branch points at the
     // desired revision.
@@ -303,7 +303,7 @@
   }
 
   /// Retrieve the MinGit executable from storage and unpack it.
-  Future<Null> _installMinGitIfNeeded() async {
+  Future<void> _installMinGitIfNeeded() async {
     if (!platform.isWindows) {
       return;
     }
@@ -319,7 +319,7 @@
 
   /// Prepare the archive repo so that it has all of the caches warmed up and
   /// is configured for the user to begin working.
-  Future<Null> _populateCaches() async {
+  Future<void> _populateCaches() async {
     await _runFlutter(<String>['doctor']);
     await _runFlutter(<String>['update-packages']);
     await _runFlutter(<String>['precache']);
@@ -342,7 +342,7 @@
   }
 
   /// Write the archive to the given output file.
-  Future<Null> _archiveFiles(File outputFile) async {
+  Future<void> _archiveFiles(File outputFile) async {
     if (outputFile.path.toLowerCase().endsWith('.zip')) {
       await _createZipArchive(outputFile, flutterRoot);
     } else if (outputFile.path.toLowerCase().endsWith('.tar.xz')) {
@@ -454,7 +454,7 @@
   static String getMetadataFilename(Platform platform) => 'releases_${platform.operatingSystem.toLowerCase()}.json';
 
   /// Publish the archive to Google Storage.
-  Future<Null> publishArchive() async {
+  Future<void> publishArchive() async {
     final String destGsPath = '$gsReleaseFolder/$destinationArchivePath';
     await _cloudCopy(outputFile.absolute.path, destGsPath);
     assert(tempDir.existsSync());
@@ -497,7 +497,7 @@
     return jsonData;
   }
 
-  Future<Null> _updateMetadata() async {
+  Future<void> _updateMetadata() async {
     // We can't just cat the metadata from the server with 'gsutil cat', because
     // Windows wants to echo the commands that execute in gsutil.bat to the
     // stdout when we do that. So, we copy the file locally and then read it
@@ -569,7 +569,7 @@
 ///
 /// Archives contain the executables and customizations for the platform that
 /// they are created on.
-Future<Null> main(List<String> argList) async {
+Future<void> main(List<String> argList) async {
   final ArgParser argParser = ArgParser();
   argParser.addOption(
     'temp_dir',
diff --git a/dev/bots/run_command.dart b/dev/bots/run_command.dart
index 0f32200..6b8f689 100644
--- a/dev/bots/run_command.dart
+++ b/dev/bots/run_command.dart
@@ -30,7 +30,7 @@
   print('$arrow $action: cd $cyan$workingDir$reset; $yellow$command$reset');
 }
 
-Future<Null> runCommand(String executable, List<String> arguments, {
+Future<void> runCommand(String executable, List<String> arguments, {
   String workingDirectory,
   Map<String, String> environment,
   bool expectNonZeroExit = false,
diff --git a/dev/bots/test.dart b/dev/bots/test.dart
index a3cf5d1..3a8b62d 100644
--- a/dev/bots/test.dart
+++ b/dev/bots/test.dart
@@ -9,7 +9,7 @@
 
 import 'run_command.dart';
 
-typedef ShardRunner = Future<Null> Function();
+typedef ShardRunner = Future<void> Function();
 
 final String flutterRoot = path.dirname(path.dirname(path.dirname(path.fromUri(Platform.script))));
 final String flutter = path.join(flutterRoot, 'bin', Platform.isWindows ? 'flutter.bat' : 'flutter');
@@ -37,7 +37,7 @@
 /// For example:
 /// SHARD=tool_tests bin/cache/dart-sdk/bin/dart dev/bots/test.dart
 /// bin/cache/dart-sdk/bin/dart dev/bots/test.dart --local-engine=host_debug_unopt
-Future<Null> main(List<String> args) async {
+Future<void> main(List<String> args) async {
   flutterTestArgs.addAll(args);
 
   final String shard = Platform.environment['SHARD'];
@@ -58,7 +58,7 @@
   }
 }
 
-Future<Null> _runSmokeTests() async {
+Future<void> _runSmokeTests() async {
   // Verify that the tests actually return failure on failure and success on
   // success.
   final String automatedTests = path.join(flutterRoot, 'dev', 'automated_tests');
@@ -138,7 +138,7 @@
   await _verifyVersion(path.join(flutterRoot, 'version'));
 }
 
-Future<Null> _runToolTests() async {
+Future<void> _runToolTests() async {
   await _runSmokeTests();
 
   await _pubRunTest(
@@ -149,7 +149,7 @@
   print('${bold}DONE: All tests successful.$reset');
 }
 
-Future<Null> _runTests() async {
+Future<void> _runTests() async {
   await _runSmokeTests();
 
   await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter'));
@@ -171,7 +171,7 @@
   print('${bold}DONE: All tests successful.$reset');
 }
 
-Future<Null> _runCoverage() async {
+Future<void> _runCoverage() async {
   final File coverageFile = File(path.join(flutterRoot, 'packages', 'flutter', 'coverage', 'lcov.info'));
   if (!coverageFile.existsSync()) {
     print('${red}Coverage file not found.$reset');
@@ -193,7 +193,7 @@
   print('${bold}DONE: Coverage collection successful.$reset');
 }
 
-Future<Null> _pubRunTest(
+Future<void> _pubRunTest(
   String workingDirectory, {
   String testPath,
   bool enableFlutterToolAsserts = false
@@ -234,7 +234,7 @@
   final int exitCode;
 }
 
-Future<Null> _runFlutterTest(String workingDirectory, {
+Future<void> _runFlutterTest(String workingDirectory, {
   String script,
   bool expectFailure = false,
   bool printOutput = true,
@@ -268,7 +268,7 @@
   );
 }
 
-Future<Null> _verifyVersion(String filename) async {
+Future<void> _verifyVersion(String filename) async {
   if (!File(filename).existsSync()) {
     print('$redLine');
     print('The version logic failed to create the Flutter version file.');
diff --git a/dev/devicelab/README.md b/dev/devicelab/README.md
index e584e5a..355d89f 100644
--- a/dev/devicelab/README.md
+++ b/dev/devicelab/README.md
@@ -177,7 +177,7 @@
 
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(() async {
     ... do something interesting ...
 
diff --git a/dev/devicelab/bin/run.dart b/dev/devicelab/bin/run.dart
index 0b2dc3a..102a6df 100644
--- a/dev/devicelab/bin/run.dart
+++ b/dev/devicelab/bin/run.dart
@@ -19,7 +19,7 @@
 ///
 /// The tasks are chosen depending on the command-line options
 /// (see [_argParser]).
-Future<Null> main(List<String> rawArgs) async {
+Future<void> main(List<String> rawArgs) async {
   ArgResults args;
   try {
     args = _argParser.parse(rawArgs);
diff --git a/dev/devicelab/bin/tasks/analyzer_benchmark.dart b/dev/devicelab/bin/tasks/analyzer_benchmark.dart
index d705eed..f676c62 100644
--- a/dev/devicelab/bin/tasks/analyzer_benchmark.dart
+++ b/dev/devicelab/bin/tasks/analyzer_benchmark.dart
@@ -7,6 +7,6 @@
 import 'package:flutter_devicelab/tasks/analysis.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(analyzerBenchmarkTask);
 }
diff --git a/dev/devicelab/bin/tasks/android_sample_catalog_generator.dart b/dev/devicelab/bin/tasks/android_sample_catalog_generator.dart
index 0fa9d4f..3de759b 100644
--- a/dev/devicelab/bin/tasks/android_sample_catalog_generator.dart
+++ b/dev/devicelab/bin/tasks/android_sample_catalog_generator.dart
@@ -9,7 +9,7 @@
 import 'package:flutter_devicelab/framework/utils.dart';
 import 'package:flutter_devicelab/tasks/sample_catalog_generator.dart';
 
-Future<Null> main(List<String> args) async {
+Future<void> main(List<String> args) async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(() => samplePageCatalogGenerator(extractCloudAuthTokenArg(args)));
 }
diff --git a/dev/devicelab/bin/tasks/basic_material_app_android__compile.dart b/dev/devicelab/bin/tasks/basic_material_app_android__compile.dart
index 3fe9310..5550b1f 100644
--- a/dev/devicelab/bin/tasks/basic_material_app_android__compile.dart
+++ b/dev/devicelab/bin/tasks/basic_material_app_android__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createBasicMaterialCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/basic_material_app_ios__compile.dart b/dev/devicelab/bin/tasks/basic_material_app_ios__compile.dart
index f56c53d..2ea749e 100644
--- a/dev/devicelab/bin/tasks/basic_material_app_ios__compile.dart
+++ b/dev/devicelab/bin/tasks/basic_material_app_ios__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createBasicMaterialCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/basic_material_app_win__compile.dart b/dev/devicelab/bin/tasks/basic_material_app_win__compile.dart
index 3fe9310..5550b1f 100644
--- a/dev/devicelab/bin/tasks/basic_material_app_win__compile.dart
+++ b/dev/devicelab/bin/tasks/basic_material_app_win__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createBasicMaterialCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/channels_integration_test.dart b/dev/devicelab/bin/tasks/channels_integration_test.dart
index 8b60289..449d0d7 100644
--- a/dev/devicelab/bin/tasks/channels_integration_test.dart
+++ b/dev/devicelab/bin/tasks/channels_integration_test.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createChannelsIntegrationTest());
 }
diff --git a/dev/devicelab/bin/tasks/channels_integration_test_ios.dart b/dev/devicelab/bin/tasks/channels_integration_test_ios.dart
index 9ac1a3a..130aa42 100644
--- a/dev/devicelab/bin/tasks/channels_integration_test_ios.dart
+++ b/dev/devicelab/bin/tasks/channels_integration_test_ios.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createChannelsIntegrationTest());
 }
diff --git a/dev/devicelab/bin/tasks/channels_integration_test_win.dart b/dev/devicelab/bin/tasks/channels_integration_test_win.dart
index 8b60289..449d0d7 100644
--- a/dev/devicelab/bin/tasks/channels_integration_test_win.dart
+++ b/dev/devicelab/bin/tasks/channels_integration_test_win.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createChannelsIntegrationTest());
 }
diff --git a/dev/devicelab/bin/tasks/commands_test.dart b/dev/devicelab/bin/tasks/commands_test.dart
index a1e695d..903cd39 100644
--- a/dev/devicelab/bin/tasks/commands_test.dart
+++ b/dev/devicelab/bin/tasks/commands_test.dart
@@ -21,7 +21,7 @@
     await device.unlock();
     final Directory appDir = dir(path.join(flutterDirectory.path, 'dev/integration_tests/ui'));
     await inDirectory(appDir, () async {
-      final Completer<Null> ready = Completer<Null>();
+      final Completer<void> ready = Completer<void>();
       bool ok;
       print('run: starting...');
       final Process run = await startProcess(
@@ -107,7 +107,7 @@
 
   final int vmServicePort;
 
-  Future<Null> drive(String name) async {
+  Future<void> drive(String name) async {
     print('drive: running commands_$name check...');
     final Process drive = await startProcess(
       path.join(flutterDirectory.path, 'bin', 'flutter'),
diff --git a/dev/devicelab/bin/tasks/complex_layout__start_up.dart b/dev/devicelab/bin/tasks/complex_layout__start_up.dart
index 189e3ff..29c67f9 100644
--- a/dev/devicelab/bin/tasks/complex_layout__start_up.dart
+++ b/dev/devicelab/bin/tasks/complex_layout__start_up.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createComplexLayoutStartupTest());
 }
diff --git a/dev/devicelab/bin/tasks/complex_layout_android__compile.dart b/dev/devicelab/bin/tasks/complex_layout_android__compile.dart
index 9af9087..db37c91 100644
--- a/dev/devicelab/bin/tasks/complex_layout_android__compile.dart
+++ b/dev/devicelab/bin/tasks/complex_layout_android__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createComplexLayoutCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/complex_layout_ios__compile.dart b/dev/devicelab/bin/tasks/complex_layout_ios__compile.dart
index de02cd6..4f46893 100644
--- a/dev/devicelab/bin/tasks/complex_layout_ios__compile.dart
+++ b/dev/devicelab/bin/tasks/complex_layout_ios__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createComplexLayoutCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/complex_layout_ios__start_up.dart b/dev/devicelab/bin/tasks/complex_layout_ios__start_up.dart
index cf1337d..1c0c36f 100644
--- a/dev/devicelab/bin/tasks/complex_layout_ios__start_up.dart
+++ b/dev/devicelab/bin/tasks/complex_layout_ios__start_up.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createComplexLayoutStartupTest());
 }
diff --git a/dev/devicelab/bin/tasks/complex_layout_scroll_perf__memory.dart b/dev/devicelab/bin/tasks/complex_layout_scroll_perf__memory.dart
index e59dc08..4b68596 100644
--- a/dev/devicelab/bin/tasks/complex_layout_scroll_perf__memory.dart
+++ b/dev/devicelab/bin/tasks/complex_layout_scroll_perf__memory.dart
@@ -9,7 +9,7 @@
 import 'package:flutter_devicelab/framework/utils.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(MemoryTest(
     '${flutterDirectory.path}/dev/benchmarks/complex_layout',
diff --git a/dev/devicelab/bin/tasks/complex_layout_scroll_perf__timeline_summary.dart b/dev/devicelab/bin/tasks/complex_layout_scroll_perf__timeline_summary.dart
index f75fa86..92c88d2 100644
--- a/dev/devicelab/bin/tasks/complex_layout_scroll_perf__timeline_summary.dart
+++ b/dev/devicelab/bin/tasks/complex_layout_scroll_perf__timeline_summary.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createComplexLayoutScrollPerfTest());
 }
diff --git a/dev/devicelab/bin/tasks/complex_layout_scroll_perf_ios__timeline_summary.dart b/dev/devicelab/bin/tasks/complex_layout_scroll_perf_ios__timeline_summary.dart
index 7295dfc..6931dfc 100644
--- a/dev/devicelab/bin/tasks/complex_layout_scroll_perf_ios__timeline_summary.dart
+++ b/dev/devicelab/bin/tasks/complex_layout_scroll_perf_ios__timeline_summary.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createComplexLayoutScrollPerfTest());
 }
diff --git a/dev/devicelab/bin/tasks/complex_layout_win__compile.dart b/dev/devicelab/bin/tasks/complex_layout_win__compile.dart
index 9af9087..db37c91 100644
--- a/dev/devicelab/bin/tasks/complex_layout_win__compile.dart
+++ b/dev/devicelab/bin/tasks/complex_layout_win__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createComplexLayoutCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/dartdocs.dart b/dev/devicelab/bin/tasks/dartdocs.dart
index 174ca24..69dc6a9 100644
--- a/dev/devicelab/bin/tasks/dartdocs.dart
+++ b/dev/devicelab/bin/tasks/dartdocs.dart
@@ -10,7 +10,7 @@
 import 'package:flutter_devicelab/framework/utils.dart';
 import 'package:path/path.dart' as path;
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(() async {
     final Stopwatch clock = Stopwatch()..start();
     final Process analysis = await startProcess(
diff --git a/dev/devicelab/bin/tasks/embedded_android_views_integration_test.dart b/dev/devicelab/bin/tasks/embedded_android_views_integration_test.dart
index 439a012..5c3f870 100644
--- a/dev/devicelab/bin/tasks/embedded_android_views_integration_test.dart
+++ b/dev/devicelab/bin/tasks/embedded_android_views_integration_test.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createEmbeddedAndroidViewsIntegrationTest());
 }
diff --git a/dev/devicelab/bin/tasks/external_ui_integration_test.dart b/dev/devicelab/bin/tasks/external_ui_integration_test.dart
index 0866f7a..f8a4c5b 100644
--- a/dev/devicelab/bin/tasks/external_ui_integration_test.dart
+++ b/dev/devicelab/bin/tasks/external_ui_integration_test.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createExternalUiIntegrationTest());
 }
diff --git a/dev/devicelab/bin/tasks/external_ui_integration_test_ios.dart b/dev/devicelab/bin/tasks/external_ui_integration_test_ios.dart
index 2da7c73..095216c 100644
--- a/dev/devicelab/bin/tasks/external_ui_integration_test_ios.dart
+++ b/dev/devicelab/bin/tasks/external_ui_integration_test_ios.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createExternalUiIntegrationTest());
 }
diff --git a/dev/devicelab/bin/tasks/flavors_test.dart b/dev/devicelab/bin/tasks/flavors_test.dart
index b5618a7..bb8e162 100644
--- a/dev/devicelab/bin/tasks/flavors_test.dart
+++ b/dev/devicelab/bin/tasks/flavors_test.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createFlavorsTest());
 }
diff --git a/dev/devicelab/bin/tasks/flavors_test_ios.dart b/dev/devicelab/bin/tasks/flavors_test_ios.dart
index 7bb864c..2dc0295 100644
--- a/dev/devicelab/bin/tasks/flavors_test_ios.dart
+++ b/dev/devicelab/bin/tasks/flavors_test_ios.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createFlavorsTest());
 }
diff --git a/dev/devicelab/bin/tasks/flavors_test_win.dart b/dev/devicelab/bin/tasks/flavors_test_win.dart
index b5618a7..bb8e162 100644
--- a/dev/devicelab/bin/tasks/flavors_test_win.dart
+++ b/dev/devicelab/bin/tasks/flavors_test_win.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createFlavorsTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_attach_test.dart b/dev/devicelab/bin/tasks/flutter_attach_test.dart
index f39faf2..ef4a9a8 100644
--- a/dev/devicelab/bin/tasks/flutter_attach_test.dart
+++ b/dev/devicelab/bin/tasks/flutter_attach_test.dart
@@ -13,11 +13,11 @@
 
 Future<void> testReload(Process process, { Future<void> Function() onListening }) async {
   section('Testing hot reload, restart and quit');
-  final Completer<Null> listening = Completer<Null>();
-  final Completer<Null> ready = Completer<Null>();
-  final Completer<Null> reloaded = Completer<Null>();
-  final Completer<Null> restarted = Completer<Null>();
-  final Completer<Null> finished = Completer<Null>();
+  final Completer<void> listening = Completer<void>();
+  final Completer<void> ready = Completer<void>();
+  final Completer<void> reloaded = Completer<void>();
+  final Completer<void> restarted = Completer<void>();
+  final Completer<void> finished = Completer<void>();
   final List<String> stdout = <String>[];
   final List<String> stderr = <String>[];
 
@@ -52,7 +52,7 @@
 
   process.exitCode.then<void>((int processExitCode) { exitCode = processExitCode; });
 
-  Future<dynamic> eventOrExit(Future<Null> event) {
+  Future<dynamic> eventOrExit(Future<void> event) {
     return Future.any<dynamic>(<Future<dynamic>>[ event, process.exitCode ]);
   }
 
@@ -116,7 +116,7 @@
         });
 
         // Give the device the time to really shut down the app.
-        await Future<Null>.delayed(const Duration(milliseconds: 200));
+        await Future<void>.delayed(const Duration(milliseconds: 200));
         // After the delay, force-stopping it shouldn't do anything, but doesn't hurt.
         await device.shellExec('am', <String>['force-stop', kAppId]);
 
diff --git a/dev/devicelab/bin/tasks/flutter_gallery__back_button_memory.dart b/dev/devicelab/bin/tasks/flutter_gallery__back_button_memory.dart
index 7812875..f74d5ae 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery__back_button_memory.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery__back_button_memory.dart
@@ -35,7 +35,7 @@
       await receivedNextMessage;
 
       // Give Android time to settle (e.g. run GCs) after closing the app.
-      await Future<Null>.delayed(const Duration(milliseconds: 100));
+      await Future<void>.delayed(const Duration(milliseconds: 100));
 
       // Relaunch the app, wait for it to launch.
       prepareForNextMessage('READY');
@@ -46,13 +46,13 @@
       await receivedNextMessage;
 
       // Wait for the Flutter app to settle (e.g. run GCs).
-      await Future<Null>.delayed(const Duration(milliseconds: 100));
+      await Future<void>.delayed(const Duration(milliseconds: 100));
     }
     await recordEnd();
   }
 }
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(BackButtonMemoryTest().run);
 }
diff --git a/dev/devicelab/bin/tasks/flutter_gallery__memory_nav.dart b/dev/devicelab/bin/tasks/flutter_gallery__memory_nav.dart
index 9d5bed2..0f12575 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery__memory_nav.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery__memory_nav.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/utils.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(MemoryTest(
     '${flutterDirectory.path}/examples/flutter_gallery',
     'test_memory/memory_nav.dart',
diff --git a/dev/devicelab/bin/tasks/flutter_gallery__start_up.dart b/dev/devicelab/bin/tasks/flutter_gallery__start_up.dart
index 13497da..a247981 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery__start_up.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery__start_up.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createFlutterGalleryStartupTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_gallery__transition_perf.dart b/dev/devicelab/bin/tasks/flutter_gallery__transition_perf.dart
index cb1c658..a6b99e0 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery__transition_perf.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery__transition_perf.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createGalleryTransitionTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_gallery__transition_perf_with_semantics.dart b/dev/devicelab/bin/tasks/flutter_gallery__transition_perf_with_semantics.dart
index 549ac49..8b4f3e7 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery__transition_perf_with_semantics.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery__transition_perf_with_semantics.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(() async {
     final TaskResult withoutSemantics = await createGalleryTransitionTest()();
diff --git a/dev/devicelab/bin/tasks/flutter_gallery_android__compile.dart b/dev/devicelab/bin/tasks/flutter_gallery_android__compile.dart
index 01afc14..c68acdc 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery_android__compile.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery_android__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createFlutterGalleryCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_gallery_instrumentation_test.dart b/dev/devicelab/bin/tasks/flutter_gallery_instrumentation_test.dart
index 7dd0f80..d335607 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery_instrumentation_test.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery_instrumentation_test.dart
@@ -13,7 +13,7 @@
 // with the Java code to report its status. If this test fails due to a problem on the Dart
 // side, you can debug that by just running that file directly using `flutter run`.
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
 
   await task(() async {
diff --git a/dev/devicelab/bin/tasks/flutter_gallery_ios32__start_up.dart b/dev/devicelab/bin/tasks/flutter_gallery_ios32__start_up.dart
index 9305bd1..7b797b9 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery_ios32__start_up.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery_ios32__start_up.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createFlutterGalleryStartupTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_gallery_ios32__transition_perf.dart b/dev/devicelab/bin/tasks/flutter_gallery_ios32__transition_perf.dart
index 965e7df..906b121 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery_ios32__transition_perf.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery_ios32__transition_perf.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createGalleryTransitionTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_gallery_ios__compile.dart b/dev/devicelab/bin/tasks/flutter_gallery_ios__compile.dart
index 19807a6..a9c4963 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery_ios__compile.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery_ios__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createFlutterGalleryCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_gallery_ios__start_up.dart b/dev/devicelab/bin/tasks/flutter_gallery_ios__start_up.dart
index 9305bd1..7b797b9 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery_ios__start_up.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery_ios__start_up.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createFlutterGalleryStartupTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_gallery_ios__transition_perf.dart b/dev/devicelab/bin/tasks/flutter_gallery_ios__transition_perf.dart
index a156c09..381b44f 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery_ios__transition_perf.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery_ios__transition_perf.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createGalleryTransitionTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_gallery_win__compile.dart b/dev/devicelab/bin/tasks/flutter_gallery_win__compile.dart
index 01afc14..c68acdc 100644
--- a/dev/devicelab/bin/tasks/flutter_gallery_win__compile.dart
+++ b/dev/devicelab/bin/tasks/flutter_gallery_win__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createFlutterGalleryCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_view__start_up.dart b/dev/devicelab/bin/tasks/flutter_view__start_up.dart
index 090b58e..565e6e4 100644
--- a/dev/devicelab/bin/tasks/flutter_view__start_up.dart
+++ b/dev/devicelab/bin/tasks/flutter_view__start_up.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createFlutterViewStartupTest());
 }
diff --git a/dev/devicelab/bin/tasks/flutter_view_ios__start_up.dart b/dev/devicelab/bin/tasks/flutter_view_ios__start_up.dart
index 8f8e744..8073f7d 100644
--- a/dev/devicelab/bin/tasks/flutter_view_ios__start_up.dart
+++ b/dev/devicelab/bin/tasks/flutter_view_ios__start_up.dart
@@ -10,7 +10,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(() async {
     final Directory iosDirectory = dir(
diff --git a/dev/devicelab/bin/tasks/gradle_plugin_test.dart b/dev/devicelab/bin/tasks/gradle_plugin_test.dart
index a2b2545..bda0a9e 100644
--- a/dev/devicelab/bin/tasks/gradle_plugin_test.dart
+++ b/dev/devicelab/bin/tasks/gradle_plugin_test.dart
@@ -166,7 +166,7 @@
   String get rootPath => path.join(parent.path, name);
   String get androidPath => path.join(rootPath, 'android');
 
-  Future<Null> addCustomBuildType(String name, {String initWith}) async {
+  Future<void> addCustomBuildType(String name, {String initWith}) async {
     final File buildScript = File(
       path.join(androidPath, 'app', 'build.gradle'),
     );
@@ -183,7 +183,7 @@
     ''');
   }
 
-  Future<Null> addProductFlavor(String name) async {
+  Future<void> addProductFlavor(String name) async {
     final File buildScript = File(
       path.join(androidPath, 'app', 'build.gradle'),
     );
@@ -202,14 +202,14 @@
     ''');
   }
 
-  Future<Null> introduceError() async {
+  Future<void> introduceError() async {
     final File buildScript = File(
       path.join(androidPath, 'app', 'build.gradle'),
     );
     await buildScript.writeAsString((await buildScript.readAsString()).replaceAll('buildTypes', 'builTypes'));
   }
 
-  Future<Null> runGradleTask(String task, {List<String> options}) async {
+  Future<void> runGradleTask(String task, {List<String> options}) async {
     return _runGradleTask(workingDirectory: androidPath, task: task, options: options);
   }
 
@@ -244,14 +244,14 @@
   String get exampleAndroidPath => path.join(examplePath, 'android');
   String get debugApkPath => path.join(examplePath, 'build', 'app', 'outputs', 'apk', 'debug', 'app-debug.apk');
 
-  Future<Null> runGradleTask(String task, {List<String> options}) async {
+  Future<void> runGradleTask(String task, {List<String> options}) async {
     return _runGradleTask(workingDirectory: exampleAndroidPath, task: task, options: options);
   }
 
   bool get hasDebugApk => File(debugApkPath).existsSync();
 }
 
-Future<Null> _runGradleTask({String workingDirectory, String task, List<String> options}) async {
+Future<void> _runGradleTask({String workingDirectory, String task, List<String> options}) async {
   final ProcessResult result = await _resultOfGradleTask(
       workingDirectory: workingDirectory,
       task: task,
diff --git a/dev/devicelab/bin/tasks/hello_world__memory.dart b/dev/devicelab/bin/tasks/hello_world__memory.dart
index 74433f0..0f645e1 100644
--- a/dev/devicelab/bin/tasks/hello_world__memory.dart
+++ b/dev/devicelab/bin/tasks/hello_world__memory.dart
@@ -27,13 +27,13 @@
       '-d', device.deviceId,
       test,
     ]);
-    await Future<Null>.delayed(const Duration(milliseconds: 1500));
+    await Future<void>.delayed(const Duration(milliseconds: 1500));
     await recordStart();
-    await Future<Null>.delayed(const Duration(milliseconds: 3000));
+    await Future<void>.delayed(const Duration(milliseconds: 3000));
     await recordEnd();
   }
 }
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(HelloWorldMemoryTest().run);
 }
diff --git a/dev/devicelab/bin/tasks/hello_world_android__compile.dart b/dev/devicelab/bin/tasks/hello_world_android__compile.dart
index 41baadc..b07b313 100644
--- a/dev/devicelab/bin/tasks/hello_world_android__compile.dart
+++ b/dev/devicelab/bin/tasks/hello_world_android__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createHelloWorldCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/hello_world_ios__compile.dart b/dev/devicelab/bin/tasks/hello_world_ios__compile.dart
index 55bc3a0..10d4c56 100644
--- a/dev/devicelab/bin/tasks/hello_world_ios__compile.dart
+++ b/dev/devicelab/bin/tasks/hello_world_ios__compile.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/perf_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createHelloWorldCompileTest());
 }
diff --git a/dev/devicelab/bin/tasks/hot_mode_dev_cycle__benchmark.dart b/dev/devicelab/bin/tasks/hot_mode_dev_cycle__benchmark.dart
index 3a4a3bc..0660c26 100644
--- a/dev/devicelab/bin/tasks/hot_mode_dev_cycle__benchmark.dart
+++ b/dev/devicelab/bin/tasks/hot_mode_dev_cycle__benchmark.dart
@@ -7,6 +7,6 @@
 import 'package:flutter_devicelab/tasks/hot_mode_tests.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(createHotModeTest());
 }
diff --git a/dev/devicelab/bin/tasks/hot_mode_dev_cycle_linux__benchmark.dart b/dev/devicelab/bin/tasks/hot_mode_dev_cycle_linux__benchmark.dart
index 68bef9d..24af612 100644
--- a/dev/devicelab/bin/tasks/hot_mode_dev_cycle_linux__benchmark.dart
+++ b/dev/devicelab/bin/tasks/hot_mode_dev_cycle_linux__benchmark.dart
@@ -7,6 +7,6 @@
 import 'package:flutter_devicelab/tasks/hot_mode_tests.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(createHotModeTest());
 }
diff --git a/dev/devicelab/bin/tasks/hot_mode_dev_cycle_win__benchmark.dart b/dev/devicelab/bin/tasks/hot_mode_dev_cycle_win__benchmark.dart
index 68bef9d..24af612 100644
--- a/dev/devicelab/bin/tasks/hot_mode_dev_cycle_win__benchmark.dart
+++ b/dev/devicelab/bin/tasks/hot_mode_dev_cycle_win__benchmark.dart
@@ -7,6 +7,6 @@
 import 'package:flutter_devicelab/tasks/hot_mode_tests.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(createHotModeTest());
 }
diff --git a/dev/devicelab/bin/tasks/integration_ui.dart b/dev/devicelab/bin/tasks/integration_ui.dart
index 58cfb64..6cff334 100644
--- a/dev/devicelab/bin/tasks/integration_ui.dart
+++ b/dev/devicelab/bin/tasks/integration_ui.dart
@@ -9,7 +9,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 
 /// End to end tests for Android.
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(runEndToEndTests);
 }
diff --git a/dev/devicelab/bin/tasks/integration_ui_ios.dart b/dev/devicelab/bin/tasks/integration_ui_ios.dart
index 0be5f2b..465b5db 100644
--- a/dev/devicelab/bin/tasks/integration_ui_ios.dart
+++ b/dev/devicelab/bin/tasks/integration_ui_ios.dart
@@ -9,7 +9,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 
 /// End to end tests for iOS.
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(runEndToEndTests);
 }
diff --git a/dev/devicelab/bin/tasks/ios_sample_catalog_generator.dart b/dev/devicelab/bin/tasks/ios_sample_catalog_generator.dart
index 20efb83..7f3cb26 100644
--- a/dev/devicelab/bin/tasks/ios_sample_catalog_generator.dart
+++ b/dev/devicelab/bin/tasks/ios_sample_catalog_generator.dart
@@ -9,7 +9,7 @@
 import 'package:flutter_devicelab/framework/utils.dart';
 import 'package:flutter_devicelab/tasks/sample_catalog_generator.dart';
 
-Future<Null> main(List<String> args) async {
+Future<void> main(List<String> args) async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(() => samplePageCatalogGenerator(extractCloudAuthTokenArg(args)));
 }
diff --git a/dev/devicelab/bin/tasks/microbenchmarks.dart b/dev/devicelab/bin/tasks/microbenchmarks.dart
index 2b01640..5cc3b35 100644
--- a/dev/devicelab/bin/tasks/microbenchmarks.dart
+++ b/dev/devicelab/bin/tasks/microbenchmarks.dart
@@ -9,7 +9,7 @@
 import 'package:flutter_devicelab/tasks/microbenchmarks.dart';
 
 /// Runs microbenchmarks on Android.
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createMicrobenchmarkTask());
 }
diff --git a/dev/devicelab/bin/tasks/microbenchmarks_ios.dart b/dev/devicelab/bin/tasks/microbenchmarks_ios.dart
index 554d123..9cf4ae7 100644
--- a/dev/devicelab/bin/tasks/microbenchmarks_ios.dart
+++ b/dev/devicelab/bin/tasks/microbenchmarks_ios.dart
@@ -9,7 +9,7 @@
 import 'package:flutter_devicelab/tasks/microbenchmarks.dart';
 
 /// Runs microbenchmarks on iOS.
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createMicrobenchmarkTask());
 }
diff --git a/dev/devicelab/bin/tasks/module_test.dart b/dev/devicelab/bin/tasks/module_test.dart
index 45e48b2..2e03791 100644
--- a/dev/devicelab/bin/tasks/module_test.dart
+++ b/dev/devicelab/bin/tasks/module_test.dart
@@ -11,7 +11,7 @@
 
 /// Tests that the Flutter module project template works and supports
 /// adding Flutter to an existing Android app.
-Future<Null> main() async {
+Future<void> main() async {
   await task(() async {
 
     section('Find Java');
diff --git a/dev/devicelab/bin/tasks/module_test_ios.dart b/dev/devicelab/bin/tasks/module_test_ios.dart
index b69db06..d8869e9 100644
--- a/dev/devicelab/bin/tasks/module_test_ios.dart
+++ b/dev/devicelab/bin/tasks/module_test_ios.dart
@@ -12,7 +12,7 @@
 
 /// Tests that the Flutter module project template works and supports
 /// adding Flutter to an existing iOS app.
-Future<Null> main() async {
+Future<void> main() async {
   await task(() async {
 
     section('Create Flutter module project');
diff --git a/dev/devicelab/bin/tasks/platform_channel_sample_test.dart b/dev/devicelab/bin/tasks/platform_channel_sample_test.dart
index 38b10b3..1ab2e6e 100644
--- a/dev/devicelab/bin/tasks/platform_channel_sample_test.dart
+++ b/dev/devicelab/bin/tasks/platform_channel_sample_test.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createPlatformChannelSampleTest());
 }
diff --git a/dev/devicelab/bin/tasks/platform_channel_sample_test_ios.dart b/dev/devicelab/bin/tasks/platform_channel_sample_test_ios.dart
index 9feeaa5..b1a4777 100644
--- a/dev/devicelab/bin/tasks/platform_channel_sample_test_ios.dart
+++ b/dev/devicelab/bin/tasks/platform_channel_sample_test_ios.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createPlatformChannelSampleTest());
 }
diff --git a/dev/devicelab/bin/tasks/platform_interaction_test.dart b/dev/devicelab/bin/tasks/platform_interaction_test.dart
index 79e7f5f..f9d0b4d 100644
--- a/dev/devicelab/bin/tasks/platform_interaction_test.dart
+++ b/dev/devicelab/bin/tasks/platform_interaction_test.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createPlatformInteractionTest());
 }
diff --git a/dev/devicelab/bin/tasks/platform_interaction_test_ios.dart b/dev/devicelab/bin/tasks/platform_interaction_test_ios.dart
index 189ffef..18c6e57 100644
--- a/dev/devicelab/bin/tasks/platform_interaction_test_ios.dart
+++ b/dev/devicelab/bin/tasks/platform_interaction_test_ios.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 import 'package:flutter_devicelab/tasks/integration_tests.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(createPlatformInteractionTest());
 }
diff --git a/dev/devicelab/bin/tasks/platform_view__start_up.dart b/dev/devicelab/bin/tasks/platform_view__start_up.dart
index 6cc8e36..4da9aaf 100644
--- a/dev/devicelab/bin/tasks/platform_view__start_up.dart
+++ b/dev/devicelab/bin/tasks/platform_view__start_up.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createPlatformViewStartupTest());
 }
diff --git a/dev/devicelab/bin/tasks/platform_view_ios__start_up.dart b/dev/devicelab/bin/tasks/platform_view_ios__start_up.dart
index c18958a..96e7c9f 100644
--- a/dev/devicelab/bin/tasks/platform_view_ios__start_up.dart
+++ b/dev/devicelab/bin/tasks/platform_view_ios__start_up.dart
@@ -10,7 +10,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.ios;
   await task(() async {
     final Directory iosDirectory = dir(
diff --git a/dev/devicelab/bin/tasks/plugin_test.dart b/dev/devicelab/bin/tasks/plugin_test.dart
index 0f263c4..e00d258 100644
--- a/dev/devicelab/bin/tasks/plugin_test.dart
+++ b/dev/devicelab/bin/tasks/plugin_test.dart
@@ -7,7 +7,7 @@
 import 'package:flutter_devicelab/tasks/plugin_tests.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(combine(<TaskFunction>[
     PluginTest('apk', <String>['-a', 'java']),
     PluginTest('apk', <String>['-a', 'kotlin']),
diff --git a/dev/devicelab/bin/tasks/plugin_test_ios.dart b/dev/devicelab/bin/tasks/plugin_test_ios.dart
index 8b706c9..961f57f 100644
--- a/dev/devicelab/bin/tasks/plugin_test_ios.dart
+++ b/dev/devicelab/bin/tasks/plugin_test_ios.dart
@@ -7,7 +7,7 @@
 import 'package:flutter_devicelab/tasks/plugin_tests.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(combine(<TaskFunction>[
     PluginTest('ios', <String>['-i', 'objc']),
     PluginTest('ios', <String>['-i', 'swift']),
diff --git a/dev/devicelab/bin/tasks/plugin_test_win.dart b/dev/devicelab/bin/tasks/plugin_test_win.dart
index 0f263c4..e00d258 100644
--- a/dev/devicelab/bin/tasks/plugin_test_win.dart
+++ b/dev/devicelab/bin/tasks/plugin_test_win.dart
@@ -7,7 +7,7 @@
 import 'package:flutter_devicelab/tasks/plugin_tests.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(combine(<TaskFunction>[
     PluginTest('apk', <String>['-a', 'java']),
     PluginTest('apk', <String>['-a', 'kotlin']),
diff --git a/dev/devicelab/bin/tasks/routing_test.dart b/dev/devicelab/bin/tasks/routing_test.dart
index 851d9dc..6098132 100644
--- a/dev/devicelab/bin/tasks/routing_test.dart
+++ b/dev/devicelab/bin/tasks/routing_test.dart
@@ -29,7 +29,7 @@
     });
     section('TEST WHETHER `flutter run --route` WORKS');
     await inDirectory(appDir, () async {
-      final Completer<Null> ready = Completer<Null>();
+      final Completer<void> ready = Completer<void>();
       bool ok;
       print('run: starting...');
       final Process run = await startProcess(
diff --git a/dev/devicelab/bin/tasks/run_machine_concurrent_hot_reload.dart b/dev/devicelab/bin/tasks/run_machine_concurrent_hot_reload.dart
index aa441e5..34d32ae 100644
--- a/dev/devicelab/bin/tasks/run_machine_concurrent_hot_reload.dart
+++ b/dev/devicelab/bin/tasks/run_machine_concurrent_hot_reload.dart
@@ -39,7 +39,7 @@
     final Directory appDir =
         dir(path.join(flutterDirectory.path, 'dev/integration_tests/ui'));
     await inDirectory(appDir, () async {
-      final Completer<Null> ready = Completer<Null>();
+      final Completer<void> ready = Completer<void>();
       bool ok;
       print('run: starting...');
       final Process run = await startProcess(
diff --git a/dev/devicelab/bin/tasks/run_release_test.dart b/dev/devicelab/bin/tasks/run_release_test.dart
index 7ebcb42..fc34249 100644
--- a/dev/devicelab/bin/tasks/run_release_test.dart
+++ b/dev/devicelab/bin/tasks/run_release_test.dart
@@ -18,7 +18,7 @@
     await device.unlock();
     final Directory appDir = dir(path.join(flutterDirectory.path, 'dev/integration_tests/ui'));
     await inDirectory(appDir, () async {
-      final Completer<Null> ready = Completer<Null>();
+      final Completer<void> ready = Completer<void>();
       print('run: starting...');
       final Process run = await startProcess(
         path.join(flutterDirectory.path, 'bin', 'flutter'),
diff --git a/dev/devicelab/bin/tasks/service_extensions_test.dart b/dev/devicelab/bin/tasks/service_extensions_test.dart
index 898d76f..a76b37c 100644
--- a/dev/devicelab/bin/tasks/service_extensions_test.dart
+++ b/dev/devicelab/bin/tasks/service_extensions_test.dart
@@ -21,7 +21,7 @@
     await device.unlock();
     final Directory appDir = dir(path.join(flutterDirectory.path, 'dev/integration_tests/ui'));
     await inDirectory(appDir, () async {
-      final Completer<Null> ready = Completer<Null>();
+      final Completer<void> ready = Completer<void>();
       bool ok;
       print('run: starting...');
       final Process run = await startProcess(
diff --git a/dev/devicelab/bin/tasks/smoke_test_failure.dart b/dev/devicelab/bin/tasks/smoke_test_failure.dart
index 8a0328c..f3fabe8 100644
--- a/dev/devicelab/bin/tasks/smoke_test_failure.dart
+++ b/dev/devicelab/bin/tasks/smoke_test_failure.dart
@@ -7,7 +7,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 
 /// Smoke test of a task that fails by returning an unsuccessful response.
-Future<Null> main() async {
+Future<void> main() async {
   await task(() async {
     return TaskResult.failure('Failed');
   });
diff --git a/dev/devicelab/bin/tasks/smoke_test_setup_failure.dart b/dev/devicelab/bin/tasks/smoke_test_setup_failure.dart
index 7724d8b..552a33c 100644
--- a/dev/devicelab/bin/tasks/smoke_test_setup_failure.dart
+++ b/dev/devicelab/bin/tasks/smoke_test_setup_failure.dart
@@ -10,4 +10,4 @@
 /// therefore will not accept requests to run tasks. When the runner attempts to
 /// connect and run the test it will receive a "method not found" error from the
 /// VM service, will likely retry and finally time out.
-Future<Null> main() async {}
+Future<void> main() async {}
diff --git a/dev/devicelab/bin/tasks/smoke_test_success.dart b/dev/devicelab/bin/tasks/smoke_test_success.dart
index b77cbae..7691822 100644
--- a/dev/devicelab/bin/tasks/smoke_test_success.dart
+++ b/dev/devicelab/bin/tasks/smoke_test_success.dart
@@ -7,7 +7,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 
 /// Smoke test of a successful task.
-Future<Null> main() async {
+Future<void> main() async {
   await task(() async {
     return TaskResult.success(<String, dynamic>{});
   });
diff --git a/dev/devicelab/bin/tasks/smoke_test_throws.dart b/dev/devicelab/bin/tasks/smoke_test_throws.dart
index 681f7c8..e45f1b7 100644
--- a/dev/devicelab/bin/tasks/smoke_test_throws.dart
+++ b/dev/devicelab/bin/tasks/smoke_test_throws.dart
@@ -7,7 +7,7 @@
 import 'package:flutter_devicelab/framework/framework.dart';
 
 /// Smoke test of a task that fails with an exception.
-Future<Null> main() async {
+Future<void> main() async {
   await task(() async {
     throw 'failed';
   });
diff --git a/dev/devicelab/bin/tasks/technical_debt__cost.dart b/dev/devicelab/bin/tasks/technical_debt__cost.dart
index 7cc137d..9345c19 100644
--- a/dev/devicelab/bin/tasks/technical_debt__cost.dart
+++ b/dev/devicelab/bin/tasks/technical_debt__cost.dart
@@ -76,7 +76,7 @@
 const String _kCostBenchmarkKey = 'technical_debt_in_dollars';
 const String _kNumberOfDependenciesKey = 'dependencies_count';
 
-Future<Null> main() async {
+Future<void> main() async {
   await task(() async {
     return TaskResult.success(
       <String, dynamic>{
diff --git a/dev/devicelab/bin/tasks/tiles_scroll_perf__timeline_summary.dart b/dev/devicelab/bin/tasks/tiles_scroll_perf__timeline_summary.dart
index 248c32b..bfc3251 100644
--- a/dev/devicelab/bin/tasks/tiles_scroll_perf__timeline_summary.dart
+++ b/dev/devicelab/bin/tasks/tiles_scroll_perf__timeline_summary.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_devicelab/framework/adb.dart';
 import 'package:flutter_devicelab/framework/framework.dart';
 
-Future<Null> main() async {
+Future<void> main() async {
   deviceOperatingSystem = DeviceOperatingSystem.android;
   await task(createTilesScrollPerfTest());
 }
diff --git a/dev/devicelab/lib/framework/adb.dart b/dev/devicelab/lib/framework/adb.dart
index bcee6a4..6afac24 100644
--- a/dev/devicelab/lib/framework/adb.dart
+++ b/dev/devicelab/lib/framework/adb.dart
@@ -39,7 +39,7 @@
   ///
   /// Calling this method does not guarantee that the same device will be
   /// returned. For such behavior see [workingDevice].
-  Future<Null> chooseWorkingDevice();
+  Future<void> chooseWorkingDevice();
 
   /// A device to work with.
   ///
@@ -55,7 +55,7 @@
   Future<Map<String, HealthCheckResult>> checkDevices();
 
   /// Prepares the system to run tasks.
-  Future<Null> performPreflightTasks();
+  Future<void> performPreflightTasks();
 }
 
 /// A proxy for one specific device.
@@ -70,21 +70,21 @@
   Future<bool> isAsleep();
 
   /// Wake up the device if it is not awake.
-  Future<Null> wakeUp();
+  Future<void> wakeUp();
 
   /// Send the device to sleep mode.
-  Future<Null> sendToSleep();
+  Future<void> sendToSleep();
 
   /// Emulates pressing the power button, toggling the device's on/off state.
-  Future<Null> togglePower();
+  Future<void> togglePower();
 
   /// Unlocks the device.
   ///
   /// Assumes the device doesn't have a secure unlock pattern.
-  Future<Null> unlock();
+  Future<void> unlock();
 
   /// Emulate a tap on the touch screen.
-  Future<Null> tap(int x, int y);
+  Future<void> tap(int x, int y);
 
   /// Read memory statistics for a process.
   Future<Map<String, dynamic>> getMemoryStats(String packageName);
@@ -96,7 +96,7 @@
   Stream<String> get logcat;
 
   /// Stop a process.
-  Future<Null> stop(String packageName);
+  Future<void> stop(String packageName);
 }
 
 class AndroidDeviceDiscovery implements DeviceDiscovery {
@@ -127,7 +127,7 @@
   /// Picks a random Android device out of connected devices and sets it as
   /// [workingDevice].
   @override
-  Future<Null> chooseWorkingDevice() async {
+  Future<void> chooseWorkingDevice() async {
     final List<Device> allDevices = (await discoverDevices())
       .map<Device>((String id) => AndroidDevice(deviceId: id))
       .toList();
@@ -187,7 +187,7 @@
   }
 
   @override
-  Future<Null> performPreflightTasks() async {
+  Future<void> performPreflightTasks() async {
     // Kills the `adb` server causing it to start a new instance upon next
     // command.
     //
@@ -218,14 +218,14 @@
 
   /// Wake up the device if it is not awake using [togglePower].
   @override
-  Future<Null> wakeUp() async {
+  Future<void> wakeUp() async {
     if (!(await isAwake()))
       await togglePower();
   }
 
   /// Send the device to sleep mode if it is not asleep using [togglePower].
   @override
-  Future<Null> sendToSleep() async {
+  Future<void> sendToSleep() async {
     if (!(await isAsleep()))
       await togglePower();
   }
@@ -233,7 +233,7 @@
   /// Sends `KEYCODE_POWER` (26), which causes the device to toggle its mode
   /// between awake and asleep.
   @override
-  Future<Null> togglePower() async {
+  Future<void> togglePower() async {
     await shellExec('input', const <String>['keyevent', '26']);
   }
 
@@ -241,13 +241,13 @@
   ///
   /// This only works when the device doesn't have a secure unlock pattern.
   @override
-  Future<Null> unlock() async {
+  Future<void> unlock() async {
     await wakeUp();
     await shellExec('input', const <String>['keyevent', '82']);
   }
 
   @override
-  Future<Null> tap(int x, int y) async {
+  Future<void> tap(int x, int y) async {
     await shellExec('input', <String>['tap', '$x', '$y']);
   }
 
@@ -261,7 +261,7 @@
   }
 
   /// Executes [command] on `adb shell` and returns its exit code.
-  Future<Null> shellExec(String command, List<String> arguments, { Map<String, String> environment }) async {
+  Future<void> shellExec(String command, List<String> arguments, { Map<String, String> environment }) async {
     await adb(<String>['shell', command]..addAll(arguments), environment: environment);
   }
 
@@ -343,7 +343,7 @@
   }
 
   @override
-  Future<Null> stop(String packageName) async {
+  Future<void> stop(String packageName) async {
     return shellExec('am', <String>['force-stop', packageName]);
   }
 }
@@ -371,7 +371,7 @@
   /// Picks a random iOS device out of connected devices and sets it as
   /// [workingDevice].
   @override
-  Future<Null> chooseWorkingDevice() async {
+  Future<void> chooseWorkingDevice() async {
     final List<IosDevice> allDevices = (await discoverDevices())
       .map<IosDevice>((String id) => IosDevice(deviceId: id))
       .toList();
@@ -405,7 +405,7 @@
   }
 
   @override
-  Future<Null> performPreflightTasks() async {
+  Future<void> performPreflightTasks() async {
     // Currently we do not have preflight tasks for iOS.
     return null;
   }
@@ -430,19 +430,19 @@
   Future<bool> isAsleep() async => false;
 
   @override
-  Future<Null> wakeUp() async {}
+  Future<void> wakeUp() async {}
 
   @override
-  Future<Null> sendToSleep() async {}
+  Future<void> sendToSleep() async {}
 
   @override
-  Future<Null> togglePower() async {}
+  Future<void> togglePower() async {}
 
   @override
-  Future<Null> unlock() async {}
+  Future<void> unlock() async {}
 
   @override
-  Future<Null> tap(int x, int y) async {
+  Future<void> tap(int x, int y) async {
     throw 'Not implemented';
   }
 
@@ -457,7 +457,7 @@
   }
 
   @override
-  Future<Null> stop(String packageName) async {}
+  Future<void> stop(String packageName) async {}
 }
 
 /// Path to the `adb` executable.
diff --git a/dev/devicelab/lib/framework/ios.dart b/dev/devicelab/lib/framework/ios.dart
index 7c182ac..2211cd3 100644
--- a/dev/devicelab/lib/framework/ios.dart
+++ b/dev/devicelab/lib/framework/ios.dart
@@ -19,7 +19,7 @@
 /// information required to build and run the project, if
 /// FLUTTER_DEVICELAB_XCODE_PROVISIONING_CONFIG is set. If it is not set,
 /// we rely on automatic signing by Xcode.
-Future<Null> prepareProvisioningCertificates(String flutterProjectPath) async {
+Future<void> prepareProvisioningCertificates(String flutterProjectPath) async {
   final String certificateConfig = await _readProvisioningConfigFile();
   if (certificateConfig == null) {
     // No cert config available, rely on automatic signing by Xcode.
@@ -31,12 +31,12 @@
   await testXcconfig.writeAsString(certificateConfig);
 }
 
-Future<Null> runPodInstallForCustomPodfile(String flutterProjectPath) async {
+Future<void> runPodInstallForCustomPodfile(String flutterProjectPath) async {
   final String iosPath = path.join(flutterProjectPath, 'ios');
   exec('pod', <String>['install', '--project-directory=$iosPath']);
 }
 
-Future<Null> _patchXcconfigFilesIfNotPatched(String flutterProjectPath) async {
+Future<void> _patchXcconfigFilesIfNotPatched(String flutterProjectPath) async {
   final List<File> xcconfigFiles = <File>[
     _fs.file(path.join(flutterProjectPath, 'ios/Flutter/Flutter.xcconfig')),
     _fs.file(path.join(flutterProjectPath, 'ios/Flutter/Debug.xcconfig')),
diff --git a/dev/devicelab/lib/framework/runner.dart b/dev/devicelab/lib/framework/runner.dart
index 87ad319..7c7837a 100644
--- a/dev/devicelab/lib/framework/runner.dart
+++ b/dev/devicelab/lib/framework/runner.dart
@@ -97,7 +97,7 @@
   //                delay to let the task process open up the VM service port.
   //                Otherwise we almost always hit the non-ready case first and
   //                wait a whole 1 second, which is annoying.
-  await Future<Null>.delayed(const Duration(milliseconds: 100));
+  await Future<void>.delayed(const Duration(milliseconds: 100));
 
   while (true) {
     try {
@@ -123,7 +123,7 @@
       print('VM service not ready yet: $error');
       const Duration pauseBetweenRetries = Duration(milliseconds: 200);
       print('Will retry in $pauseBetweenRetries.');
-      await Future<Null>.delayed(pauseBetweenRetries);
+      await Future<void>.delayed(pauseBetweenRetries);
     }
   }
 }
diff --git a/dev/devicelab/lib/framework/utils.dart b/dev/devicelab/lib/framework/utils.dart
index 8ec8345..ecbf4ff 100644
--- a/dev/devicelab/lib/framework/utils.dart
+++ b/dev/devicelab/lib/framework/utils.dart
@@ -243,12 +243,12 @@
   return process;
 }
 
-Future<Null> forceQuitRunningProcesses() async {
+Future<void> forceQuitRunningProcesses() async {
   if (_runningProcesses.isEmpty)
     return;
 
   // Give normally quitting processes a chance to report their exit code.
-  await Future<Null>.delayed(const Duration(seconds: 1));
+  await Future<void>.delayed(const Duration(seconds: 1));
 
   // Whatever's left, kill it.
   for (ProcessInfo p in _runningProcesses) {
@@ -270,8 +270,8 @@
 }) async {
   final Process process = await startProcess(executable, arguments, environment: environment, workingDirectory: workingDirectory);
 
-  final Completer<Null> stdoutDone = Completer<Null>();
-  final Completer<Null> stderrDone = Completer<Null>();
+  final Completer<void> stdoutDone = Completer<void>();
+  final Completer<void> stderrDone = Completer<void>();
   process.stdout
       .transform<String>(utf8.decoder)
       .transform<String>(const LineSplitter())
@@ -285,7 +285,7 @@
         print('stderr: $line');
       }, onDone: () { stderrDone.complete(); });
 
-  await Future.wait<Null>(<Future<Null>>[stdoutDone.future, stderrDone.future]);
+  await Future.wait<void>(<Future<void>>[stdoutDone.future, stderrDone.future]);
   final int exitCode = await process.exitCode;
 
   if (exitCode != 0 && !canFail)
@@ -307,8 +307,8 @@
   final Process process = await startProcess(executable, arguments, environment: environment, workingDirectory: workingDirectory);
 
   final StringBuffer output = StringBuffer();
-  final Completer<Null> stdoutDone = Completer<Null>();
-  final Completer<Null> stderrDone = Completer<Null>();
+  final Completer<void> stdoutDone = Completer<void>();
+  final Completer<void> stderrDone = Completer<void>();
   process.stdout
       .transform<String>(utf8.decoder)
       .transform<String>(const LineSplitter())
@@ -323,7 +323,7 @@
         print('stderr: $line');
       }, onDone: () { stderrDone.complete(); });
 
-  await Future.wait<Null>(<Future<Null>>[stdoutDone.future, stderrDone.future]);
+  await Future.wait<void>(<Future<void>>[stdoutDone.future, stderrDone.future]);
   final int exitCode = await process.exitCode;
 
   if (exitCode != 0 && !canFail)
@@ -420,7 +420,7 @@
   return const JsonEncoder.withIndent('  ').convert(data) + '\n';
 }
 
-Future<Null> getFlutter(String revision) async {
+Future<void> getFlutter(String revision) async {
   section('Get Flutter!');
 
   if (exists(flutterDirectory)) {
@@ -495,8 +495,8 @@
 ///     } catch (error, chain) {
 ///
 ///     }
-Future<Null> runAndCaptureAsyncStacks(Future<Null> callback()) {
-  final Completer<Null> completer = Completer<Null>();
+Future<void> runAndCaptureAsyncStacks(Future<void> callback()) {
+  final Completer<void> completer = Completer<void>();
   Chain.capture(() async {
     await callback();
     completer.complete();
diff --git a/dev/devicelab/lib/tasks/hot_mode_tests.dart b/dev/devicelab/lib/tasks/hot_mode_tests.dart
index e24ff66..8980128 100644
--- a/dev/devicelab/lib/tasks/hot_mode_tests.dart
+++ b/dev/devicelab/lib/tasks/hot_mode_tests.dart
@@ -43,8 +43,8 @@
               environment: null
           );
 
-          final Completer<Null> stdoutDone = Completer<Null>();
-          final Completer<Null> stderrDone = Completer<Null>();
+          final Completer<void> stdoutDone = Completer<void>();
+          final Completer<void> stderrDone = Completer<void>();
           process.stdout
               .transform<String>(utf8.decoder)
               .transform<String>(const LineSplitter())
@@ -80,8 +80,8 @@
             stderrDone.complete();
           });
 
-          await Future.wait<Null>(
-              <Future<Null>>[stdoutDone.future, stderrDone.future]);
+          await Future.wait<void>(
+              <Future<void>>[stdoutDone.future, stderrDone.future]);
           await process.exitCode;
 
           twoReloadsData = json.decode(benchmarkFile.readAsStringSync());
@@ -96,8 +96,8 @@
               <String>['run']..addAll(options),
               environment: null
           );
-          final Completer<Null> stdoutDone = Completer<Null>();
-          final Completer<Null> stderrDone = Completer<Null>();
+          final Completer<void> stdoutDone = Completer<void>();
+          final Completer<void> stderrDone = Completer<void>();
           process.stdout
               .transform<String>(utf8.decoder)
               .transform<String>(const LineSplitter())
@@ -118,8 +118,8 @@
             stderrDone.complete();
           });
 
-          await Future.wait<Null>(
-              <Future<Null>>[stdoutDone.future, stderrDone.future]);
+          await Future.wait<void>(
+              <Future<void>>[stdoutDone.future, stderrDone.future]);
           await process.exitCode;
 
           freshRestartReloadsData =
diff --git a/dev/devicelab/lib/tasks/plugin_tests.dart b/dev/devicelab/lib/tasks/plugin_tests.dart
index 3a70f73..3104f88 100644
--- a/dev/devicelab/lib/tasks/plugin_tests.dart
+++ b/dev/devicelab/lib/tasks/plugin_tests.dart
@@ -73,7 +73,7 @@
 
   String get rootPath => path.join(parent.path, name);
 
-  Future<Null> addPlugin(String plugin) async {
+  Future<void> addPlugin(String plugin) async {
     final File pubspec = File(path.join(rootPath, 'pubspec.yaml'));
     String content = await pubspec.readAsString();
     content = content.replaceFirst(
@@ -83,13 +83,13 @@
     await pubspec.writeAsString(content, flush: true);
   }
 
-  Future<Null> build(String target) async {
+  Future<void> build(String target) async {
     await inDirectory(Directory(rootPath), () async {
       await flutter('build', options: <String>[target]);
     });
   }
 
-  Future<Null> delete() async {
+  Future<void> delete() async {
     if (Platform.isWindows) {
       // A running Gradle daemon might prevent us from deleting the project
       // folder on Windows.
@@ -99,7 +99,7 @@
         canFail: true,
       );
       // TODO(ianh): Investigating if flakiness is timing dependent.
-      await Future<Null>.delayed(const Duration(seconds: 10));
+      await Future<void>.delayed(const Duration(seconds: 10));
     }
     rmTree(parent);
   }
diff --git a/dev/devicelab/lib/tasks/save_catalog_screenshots.dart b/dev/devicelab/lib/tasks/save_catalog_screenshots.dart
index e1bd4d0..7c07ba6 100644
--- a/dev/devicelab/lib/tasks/save_catalog_screenshots.dart
+++ b/dev/devicelab/lib/tasks/save_catalog_screenshots.dart
@@ -61,7 +61,7 @@
       final HttpClientResponse response = await request.close().timeout(timeLimit);
       if (response.statusCode == HttpStatus.ok) {
         logMessage('Saved $name');
-        await response.drain<Null>();
+        await response.drain<void>();
       } else {
         // TODO(hansmuller): only retry on 5xx and 429 responses
         logMessage('Request to save "$name" (length ${content.length}) failed with status ${response.statusCode}, will retry');
@@ -93,7 +93,7 @@
   static bool isNotComplete(Upload upload) => !upload.isComplete;
 }
 
-Future<Null> saveScreenshots(List<String> fromPaths, List<String> largeNames, List<String> smallNames) async {
+Future<void> saveScreenshots(List<String> fromPaths, List<String> largeNames, List<String> smallNames) async {
   assert(fromPaths.length == largeNames.length);
   assert(fromPaths.length == smallNames.length);
 
@@ -113,7 +113,7 @@
 // If path is lib/foo.png then screenshotName is foo.
 String screenshotName(String path) => basenameWithoutExtension(path);
 
-Future<Null> saveCatalogScreenshots({
+Future<void> saveCatalogScreenshots({
     Directory directory, // Where the *.png screenshots are.
     String commit, // The commit hash to be used as a cloud storage "directory".
     String token, // Cloud storage authorization token.
diff --git a/dev/devicelab/test/adb_test.dart b/dev/devicelab/test/adb_test.dart
index 17c0736..11c2cd0 100644
--- a/dev/devicelab/test/adb_test.dart
+++ b/dev/devicelab/test/adb_test.dart
@@ -192,7 +192,7 @@
   }
 
   @override
-  Future<Null> shellExec(String command, List<String> arguments, { Map<String, String> environment }) async {
+  Future<void> shellExec(String command, List<String> arguments, { Map<String, String> environment }) async {
     commandLog.add(CommandArgs(
       command: command,
       arguments: arguments,
diff --git a/dev/integration_tests/external_ui/lib/main.dart b/dev/integration_tests/external_ui/lib/main.dart
index 7090b6a..454083a 100644
--- a/dev/integration_tests/external_ui/lib/main.dart
+++ b/dev/integration_tests/external_ui/lib/main.dart
@@ -30,7 +30,7 @@
   IconData _icon;
   double _flutterFrameRate;
 
-  Future<Null> _summarizeStats() async {
+  Future<void> _summarizeStats() async {
     final double framesProduced = await channel.invokeMethod('getProducedFrameRate');
     final double framesConsumed = await channel.invokeMethod('getConsumedFrameRate');
     _summary = '''
@@ -39,7 +39,7 @@
 Widget builds: $_widgetBuilds''';
   }
 
-  Future<Null> _nextState() async {
+  Future<void> _nextState() async {
     switch (_state) {
       case FrameState.initial:
         debugPrint('Starting .5x speed test...');
@@ -90,9 +90,9 @@
   static const int calibrationTickCount = 600;
 
   /// Measures Flutter's frame rate.
-  Future<Null> _calibrate() async {
+  Future<void> _calibrate() async {
     debugPrint('Awaiting calm (3 second pause)...');
-    await Future<Null>.delayed(const Duration(milliseconds: 3000));
+    await Future<void>.delayed(const Duration(milliseconds: 3000));
     debugPrint('Calibrating...');
     DateTime startTime;
     int tickCount = 0;
diff --git a/dev/integration_tests/external_ui/test_driver/main_test.dart b/dev/integration_tests/external_ui/test_driver/main_test.dart
index 856eab4..40cff67 100644
--- a/dev/integration_tests/external_ui/test_driver/main_test.dart
+++ b/dev/integration_tests/external_ui/test_driver/main_test.dart
@@ -11,7 +11,7 @@
 final RegExp statsRegExp = RegExp('Produced: (.*)fps\nConsumed: (.*)fps\nWidget builds: (.*)');
 const Duration samplingTime = Duration(seconds: 8);
 
-Future<Null> main() async {
+Future<void> main() async {
   group('texture suite', () {
     FlutterDriver driver;
 
@@ -38,7 +38,7 @@
 
       // Texture frame stats at 0.5x Flutter frame rate
       await driver.tap(fab);
-      await Future<Null>.delayed(samplingTime);
+      await Future<void>.delayed(samplingTime);
       await driver.tap(fab);
 
       final String statsSlow = await driver.getText(summary);
@@ -50,7 +50,7 @@
 
       // Texture frame stats at 2.0x Flutter frame rate
       await driver.tap(fab);
-      await Future<Null>.delayed(samplingTime);
+      await Future<void>.delayed(samplingTime);
       await driver.tap(fab);
 
       final String statsFast = await driver.getText(summary);
diff --git a/dev/integration_tests/ui/test_driver/driver_test.dart b/dev/integration_tests/ui/test_driver/driver_test.dart
index 2aca6ee..f9c4859 100644
--- a/dev/integration_tests/ui/test_driver/driver_test.dart
+++ b/dev/integration_tests/ui/test_driver/driver_test.dart
@@ -36,14 +36,14 @@
 
     test('waitForAbsent should resolve when text "present" disappears', () async {
       // Begin waiting for it to disappear
-      final Completer<Null> whenWaitForAbsentResolves = Completer<Null>();
+      final Completer<void> whenWaitForAbsentResolves = Completer<void>();
       driver.waitForAbsent(presentText).then(
         whenWaitForAbsentResolves.complete,
         onError: whenWaitForAbsentResolves.completeError,
       );
 
       // Wait 1 second then make it disappear
-      await Future<Null>.delayed(const Duration(seconds: 1));
+      await Future<void>.delayed(const Duration(seconds: 1));
       await driver.tap(find.byValueKey('togglePresent'));
 
       // Ensure waitForAbsent resolves
@@ -61,14 +61,14 @@
 
     test('waitFor should resolve when text "present" reappears', () async {
       // Begin waiting for it to reappear
-      final Completer<Null> whenWaitForResolves = Completer<Null>();
+      final Completer<void> whenWaitForResolves = Completer<void>();
       driver.waitFor(presentText).then(
         whenWaitForResolves.complete,
         onError: whenWaitForResolves.completeError,
       );
 
       // Wait 1 second then make it appear
-      await Future<Null>.delayed(const Duration(seconds: 1));
+      await Future<void>.delayed(const Duration(seconds: 1));
       await driver.tap(find.byValueKey('togglePresent'));
 
       // Ensure waitFor resolves
diff --git a/dev/integration_tests/ui/test_driver/keyboard_resize_test.dart b/dev/integration_tests/ui/test_driver/keyboard_resize_test.dart
index 288f40b..f124d70 100644
--- a/dev/integration_tests/ui/test_driver/keyboard_resize_test.dart
+++ b/dev/integration_tests/ui/test_driver/keyboard_resize_test.dart
@@ -33,7 +33,7 @@
       final SerializableFinder defaultTextField = find.byValueKey(keys.kDefaultTextField);
       await driver.waitFor(defaultTextField);
       await driver.tap(defaultTextField);
-      await Future<Null>.delayed(const Duration(seconds: 1));
+      await Future<void>.delayed(const Duration(seconds: 1));
 
       // Measure the height with keyboard displayed.
       final String heightWithKeyboardShown = await driver.getText(heightText);
@@ -43,7 +43,7 @@
       final SerializableFinder unfocusButton = find.byValueKey(keys.kUnfocusButton);
       await driver.waitFor(unfocusButton);
       await driver.tap(unfocusButton);
-      await Future<Null>.delayed(const Duration(seconds: 1));
+      await Future<void>.delayed(const Duration(seconds: 1));
 
       // Measure the final height.
       final String endHeight = await driver.getText(heightText);
diff --git a/dev/integration_tests/ui/test_driver/keyboard_textfield_test.dart b/dev/integration_tests/ui/test_driver/keyboard_textfield_test.dart
index 5869bd1..bb60af2 100644
--- a/dev/integration_tests/ui/test_driver/keyboard_textfield_test.dart
+++ b/dev/integration_tests/ui/test_driver/keyboard_textfield_test.dart
@@ -41,7 +41,7 @@
 
       // Bring up keyboard
       await driver.tap(textFieldFinder);
-      await Future<Null>.delayed(const Duration(seconds: 1));
+      await Future<void>.delayed(const Duration(seconds: 1));
 
       // Ensure that TextField is visible again
       await driver.waitFor(textFieldFinder);
diff --git a/dev/manual_tests/lib/material_arc.dart b/dev/manual_tests/lib/material_arc.dart
index 4d9ece5..23fae24 100644
--- a/dev/manual_tests/lib/material_arc.dart
+++ b/dev/manual_tests/lib/material_arc.dart
@@ -438,7 +438,7 @@
     ];
   }
 
-  Future<Null> _play(_ArcDemo demo) async {
+  Future<void> _play(_ArcDemo demo) async {
     await demo.controller.forward();
     if (demo.key.currentState != null && demo.key.currentState.mounted)
       demo.controller.reverse();
diff --git a/dev/tools/dartdoc.dart b/dev/tools/dartdoc.dart
index cde62e9..bc1671c 100644
--- a/dev/tools/dartdoc.dart
+++ b/dev/tools/dartdoc.dart
@@ -25,7 +25,7 @@
 /// in your path. It requires that 'flutter' has been run previously. It uses
 /// the version of Dart downloaded by the 'flutter' tool in this repository and
 /// will crash if that is absent.
-Future<Null> main(List<String> arguments) async {
+Future<void> main(List<String> arguments) async {
   final ArgParser argParser = _createArgsParser();
   final ArgResults args = argParser.parse(arguments);
   if (args['help']) {
diff --git a/dev/tools/gen_date_localizations.dart b/dev/tools/gen_date_localizations.dart
index 59c3a42..1567f74 100644
--- a/dev/tools/gen_date_localizations.dart
+++ b/dev/tools/gen_date_localizations.dart
@@ -36,7 +36,7 @@
 
 const String _kCommandName = 'gen_date_localizations.dart';
 
-Future<Null> main(List<String> rawArgs) async {
+Future<void> main(List<String> rawArgs) async {
   checkCwdIsRepoRoot(_kCommandName);
 
   final bool writeToFile = parseArgs(rawArgs).writeToFile;
diff --git a/dev/tools/java_and_objc_doc.dart b/dev/tools/java_and_objc_doc.dart
index 8248265..4ae5bf9 100644
--- a/dev/tools/java_and_objc_doc.dart
+++ b/dev/tools/java_and_objc_doc.dart
@@ -12,7 +12,7 @@
 
 /// This script downloads an archive of Javadoc and objc doc for the engine from
 /// the artifact store and extracts them to the location used for Dartdoc.
-Future<Null> main(List<String> args) async {
+Future<void> main(List<String> args) async {
   final String engineVersion = File('bin/internal/engine.version').readAsStringSync().trim();
 
   final String javadocUrl = 'https://storage.googleapis.com/flutter_infra/flutter/$engineVersion/android-javadoc.zip';
@@ -22,7 +22,7 @@
   generateDocs(objcdocUrl, 'objcdoc', 'Classes/FlutterViewController.html');
 }
 
-Future<Null> generateDocs(String url, String docName, String checkFile) async {
+Future<void> generateDocs(String url, String docName, String checkFile) async {
   final http.Response response = await http.get(url);
 
   final Archive archive = ZipDecoder().decodeBytes(response.bodyBytes);
diff --git a/dev/tools/vitool/lib/vitool.dart b/dev/tools/vitool/lib/vitool.dart
index e3545d5..a20b05c 100644
--- a/dev/tools/vitool/lib/vitool.dart
+++ b/dev/tools/vitool/lib/vitool.dart
@@ -386,7 +386,7 @@
 }
 
 class SvgPathCommandBuilder {
-  static const Map<String, Null> kRelativeCommands = <String, Null> {
+  static const Map<String, void> kRelativeCommands = <String, void> {
     'c': null,
     'l': null,
     'm': null,