diff --git a/dev/benchmarks/complex_layout/lib/main.dart b/dev/benchmarks/complex_layout/lib/main.dart index 9b95c744f9a5ee50877095dfd7ddad4c093daafb..efae0a2e06c495a28a43a08b4e5c7100f8c982de 100644 --- a/dev/benchmarks/complex_layout/lib/main.dart +++ b/dev/benchmarks/complex_layout/lib/main.dart @@ -494,7 +494,7 @@ class ItemGalleryBox extends StatelessWidget { children: <Widget>[ Expanded( child: TabBarView( - children: tabNames.map((String tabName) { + children: tabNames.map<Widget>((String tabName) { return Container( key: PageStorageKey<String>(tabName), child: Padding( diff --git a/dev/bots/analyze.dart b/dev/bots/analyze.dart index ec41f2c855313cb95ae5f363e47e8b946b450d51..20b70d92d1a3a62f82c808e1510c2aa2b299dd09 100644 --- a/dev/bots/analyze.dart +++ b/dev/bots/analyze.dart @@ -207,8 +207,8 @@ Future<EvalResult> _evalCommand(String executable, List<String> arguments, { final Future<List<List<int>>> savedStderr = process.stderr.toList(); final int exitCode = await process.exitCode; final EvalResult result = EvalResult( - stdout: utf8.decode((await savedStdout).expand((List<int> ints) => ints).toList()), - stderr: utf8.decode((await savedStderr).expand((List<int> ints) => ints).toList()), + stdout: utf8.decode((await savedStdout).expand<int>((List<int> ints) => ints).toList()), + stderr: utf8.decode((await savedStderr).expand<int>((List<int> ints) => ints).toList()), exitCode: exitCode, ); @@ -328,13 +328,13 @@ Future<Null> _verifyNoBadImportsInFlutter(String workingDirectory) async { .whereType<Directory>() .map<String>((Directory entity) => path.basename(entity.path)) .toList()..sort(); - if (!_matches(packages, directories)) { + if (!_matches<String>(packages, directories)) { errors.add( 'flutter/lib/*.dart does not match flutter/lib/src/*/:\n' 'These are the exported packages:\n' + - packages.map((String path) => ' lib/$path.dart').join('\n') + + packages.map<String>((String path) => ' lib/$path.dart').join('\n') + 'These are the directories:\n' + - directories.map((String path) => ' lib/src/$path/').join('\n') + directories.map<String>((String path) => ' lib/src/$path/').join('\n') ); } // Verify that the imports are well-ordered. @@ -350,7 +350,7 @@ Future<Null> _verifyNoBadImportsInFlutter(String workingDirectory) async { } } for (String package in dependencyMap.keys) { - final List<String> loop = _deepSearch(dependencyMap, package); + final List<String> loop = _deepSearch<String>(dependencyMap, package); if (loop != null) { errors.add( '${yellow}Dependency loop:$reset ' + @@ -421,7 +421,7 @@ List<T> _deepSearch<T>(Map<T, Set<T>> map, T start, [ Set<T> seen ]) { continue; // we catch these separately if (seen != null && seen.contains(key)) return <T>[start, key]; - final List<T> result = _deepSearch( + final List<T> result = _deepSearch<T>( map, key, (seen == null ? Set<T>.from(<T>[start]) : Set<T>.from(seen))..add(key), diff --git a/dev/bots/prepare_package.dart b/dev/bots/prepare_package.dart index b3b8fbbda119976651cc5da9e1110563b3d9d1eb..116018e7f9d1aa9107c4340b5db86f5417e96a12 100644 --- a/dev/bots/prepare_package.dart +++ b/dev/bots/prepare_package.dart @@ -587,7 +587,7 @@ Future<Null> main(List<String> argList) async { argParser.addOption( 'branch', defaultsTo: null, - allowed: Branch.values.map((Branch branch) => getBranchName(branch)), + allowed: Branch.values.map<String>((Branch branch) => getBranchName(branch)), help: 'The Flutter branch to build the archive with. Required.', ); argParser.addOption( diff --git a/dev/bots/run_command.dart b/dev/bots/run_command.dart index 539192c97786fff55813040d0da24453d24157c5..0f32200513dae15c52946b7d12b471ab6697729f 100644 --- a/dev/bots/run_command.dart +++ b/dev/bots/run_command.dart @@ -56,7 +56,7 @@ Future<Null> runCommand(String executable, List<String> arguments, { Future<List<List<int>>> savedStdout, savedStderr; if (printOutput) { - await Future.wait(<Future<void>>[ + await Future.wait<void>(<Future<void>>[ stdout.addStream(process.stdout), stderr.addStream(process.stderr) ]); @@ -75,8 +75,8 @@ Future<Null> runCommand(String executable, List<String> arguments, { print(failureMessage); } if (!printOutput) { - stdout.writeln(utf8.decode((await savedStdout).expand((List<int> ints) => ints).toList())); - stderr.writeln(utf8.decode((await savedStderr).expand((List<int> ints) => ints).toList())); + stdout.writeln(utf8.decode((await savedStdout).expand<int>((List<int> ints) => ints).toList())); + stderr.writeln(utf8.decode((await savedStderr).expand<int>((List<int> ints) => ints).toList())); } print( '$redLine\n' diff --git a/dev/bots/test/analyze-sample-code_test.dart b/dev/bots/test/analyze-sample-code_test.dart index 7b50ad7fa600122e03c6ebec578d93089901cee2..41ac7c4775ceef23eb7b29ac6a1f475d4a00a725 100644 --- a/dev/bots/test/analyze-sample-code_test.dart +++ b/dev/bots/test/analyze-sample-code_test.dart @@ -13,8 +13,8 @@ void main() { '../../bin/cache/dart-sdk/bin/dart', <String>['analyze-sample-code.dart', 'test/analyze-sample-code-test-input'], ); - final List<String> stdout = await process.stdout.transform(utf8.decoder).transform(const LineSplitter()).toList(); - final List<String> stderr = await process.stderr.transform(utf8.decoder).transform(const LineSplitter()).toList(); + final List<String> stdout = await process.stdout.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).toList(); + final List<String> stderr = await process.stderr.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).toList(); final Match line = RegExp(r'^(.+)/main\.dart:[0-9]+:[0-9]+: .+$').matchAsPrefix(stdout[1]); expect(line, isNot(isNull)); final String directory = line.group(1); diff --git a/dev/devicelab/bin/tasks/commands_test.dart b/dev/devicelab/bin/tasks/commands_test.dart index f23f4b8e195778ee7eb53c707ca13b2555142ec5..a1e695d6f46167b4b8981d6506bdf192a2985a90 100644 --- a/dev/devicelab/bin/tasks/commands_test.dart +++ b/dev/devicelab/bin/tasks/commands_test.dart @@ -30,8 +30,8 @@ void main() { ); final StreamController<String> stdout = StreamController<String>.broadcast(); run.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('run:stdout: $line'); stdout.add(line); @@ -46,12 +46,12 @@ void main() { } }); run.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { stderr.writeln('run:stderr: $line'); }); - run.exitCode.then((int exitCode) { ok = false; }); + run.exitCode.then<void>((int exitCode) { ok = false; }); await Future.any<dynamic>(<Future<dynamic>>[ ready.future, run.exitCode ]); if (!ok) throw 'Failed to run test app.'; @@ -114,14 +114,14 @@ class DriveHelper { <String>['drive', '--use-existing-app', 'http://127.0.0.1:$vmServicePort/', '--keep-app-running', '--driver', 'test_driver/commands_${name}_test.dart'], ); drive.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('drive:stdout: $line'); }); drive.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { stderr.writeln('drive:stderr: $line'); }); diff --git a/dev/devicelab/bin/tasks/dartdocs.dart b/dev/devicelab/bin/tasks/dartdocs.dart index bac9d9b0ff051c61f4747f4073c0596462782dc5..174ca243bcb35ee3bcc24908f820277d1c20bbe1 100644 --- a/dev/devicelab/bin/tasks/dartdocs.dart +++ b/dev/devicelab/bin/tasks/dartdocs.dart @@ -21,7 +21,7 @@ Future<Null> main() async { int publicMembers = 0; int otherErrors = 0; int otherLines = 0; - await for (String entry in analysis.stdout.transform(utf8.decoder).transform(const LineSplitter())) { + await for (String entry in analysis.stdout.transform<String>(utf8.decoder).transform<String>(const LineSplitter())) { entry = entry.trim(); print('analyzer stdout: $entry'); if (entry == 'Building flutter tool...') { @@ -36,7 +36,7 @@ Future<Null> main() async { otherLines += 1; } } - await for (String entry in analysis.stderr.transform(utf8.decoder).transform(const LineSplitter())) { + await for (String entry in analysis.stderr.transform<String>(utf8.decoder).transform<String>(const LineSplitter())) { print('analyzer stderr: $entry'); if (entry.startsWith('[lint] ')) { // ignore this line diff --git a/dev/devicelab/bin/tasks/flutter_attach_test.dart b/dev/devicelab/bin/tasks/flutter_attach_test.dart index 3c6641f42a9b985f748e50765ab8e6d17d3c0afb..f39faf21d225b47aa04957cb04238c9f69d8f1f6 100644 --- a/dev/devicelab/bin/tasks/flutter_attach_test.dart +++ b/dev/devicelab/bin/tasks/flutter_attach_test.dart @@ -26,8 +26,8 @@ Future<void> testReload(Process process, { Future<void> Function() onListening } int exitCode; process.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('attach:stdout: $line'); stdout.add(line); @@ -43,14 +43,14 @@ Future<void> testReload(Process process, { Future<void> Function() onListening } finished.complete(); }); process.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('run:stderr: $line'); stdout.add(line); }); - process.exitCode.then((int processExitCode) { exitCode = processExitCode; }); + process.exitCode.then<void>((int processExitCode) { exitCode = processExitCode; }); Future<dynamic> eventOrExit(Future<Null> event) { return Future.any<dynamic>(<Future<dynamic>>[ event, process.exitCode ]); diff --git a/dev/devicelab/bin/tasks/flutter_test_performance.dart b/dev/devicelab/bin/tasks/flutter_test_performance.dart index 2434680267bb833843fdbd7654861c764d4bfb12..0e5ef8d9796829f3b595c199000174d2ea9c1359 100644 --- a/dev/devicelab/bin/tasks/flutter_test_performance.dart +++ b/dev/devicelab/bin/tasks/flutter_test_performance.dart @@ -45,7 +45,7 @@ Future<int> runTest() async { ); int badLines = 0; TestStep step = TestStep.starting; - await for (String entry in analysis.stdout.transform(utf8.decoder).transform(const LineSplitter())) { + await for (String entry in analysis.stdout.transform<String>(utf8.decoder).transform<String>(const LineSplitter())) { print('test stdout ($step): $entry'); if (step == TestStep.starting && entry == 'Building flutter tool...') { // ignore this line @@ -76,7 +76,7 @@ Future<int> runTest() async { } } } - await for (String entry in analysis.stderr.transform(utf8.decoder).transform(const LineSplitter())) { + await for (String entry in analysis.stderr.transform<String>(utf8.decoder).transform<String>(const LineSplitter())) { print('test stderr: $entry'); badLines += 1; } diff --git a/dev/devicelab/bin/tasks/gradle_plugin_test.dart b/dev/devicelab/bin/tasks/gradle_plugin_test.dart index 32442d982e29fac9861299c78954f02332402888..8521314ea74e20c52ede99829354689abfd86e8d 100644 --- a/dev/devicelab/bin/tasks/gradle_plugin_test.dart +++ b/dev/devicelab/bin/tasks/gradle_plugin_test.dart @@ -297,7 +297,7 @@ class _Dependencies { .replaceAllMapped(_separatorExpr, (Match match) => '${match.group(1)}\n') .split('\n') // Expand escape sequences, so that '\ ', for example,ß becomes ' ' - .map((String path) => path.replaceAllMapped(_escapeExpr, (Match match) => match.group(1)).trim()) + .map<String>((String path) => path.replaceAllMapped(_escapeExpr, (Match match) => match.group(1)).trim()) .where((String path) => path.isNotEmpty) .toSet(); } diff --git a/dev/devicelab/bin/tasks/routing_test.dart b/dev/devicelab/bin/tasks/routing_test.dart index d001aa536fa707f5efca03cd48251430ae3aad36..851d9dc23554c801b71d8d6edc46da216089ff4e 100644 --- a/dev/devicelab/bin/tasks/routing_test.dart +++ b/dev/devicelab/bin/tasks/routing_test.dart @@ -37,8 +37,8 @@ void main() { <String>['run', '--verbose', '-d', device.deviceId, '--route', '/smuggle-it', 'lib/route.dart'], ); run.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('run:stdout: $line'); if (vmServicePort == null) { @@ -52,12 +52,12 @@ void main() { } }); run.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { stderr.writeln('run:stderr: $line'); }); - run.exitCode.then((int exitCode) { ok = false; }); + run.exitCode.then<void>((int exitCode) { ok = false; }); await Future.any<dynamic>(<Future<dynamic>>[ ready.future, run.exitCode ]); if (!ok) throw 'Failed to run test app.'; @@ -67,14 +67,14 @@ void main() { <String>['drive', '--use-existing-app', 'http://127.0.0.1:$vmServicePort/', '--no-keep-app-running', 'lib/route.dart'], ); drive.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('drive:stdout: $line'); }); drive.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { stderr.writeln('drive:stderr: $line'); }); 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 19d48d331ed30b177e3ffadd2a03c2ce30ba5e77..aa441e50a8aa8e73982de9bf11d1d46bede44ce0 100644 --- a/dev/devicelab/bin/tasks/run_machine_concurrent_hot_reload.dart +++ b/dev/devicelab/bin/tasks/run_machine_concurrent_hot_reload.dart @@ -27,7 +27,7 @@ void main() { } Stream<String> transformToLines(Stream<List<int>> byteStream) { - return byteStream.transform(utf8.decoder).transform(const LineSplitter()); + return byteStream.transform<String>(utf8.decoder).transform<String>(const LineSplitter()); } task(() async { @@ -74,7 +74,7 @@ void main() { transformToLines(run.stderr).listen((String line) { stderr.writeln('run:stderr: $line'); }); - run.exitCode.then((int exitCode) { + run.exitCode.then<void>((int exitCode) { ok = false; }); await Future.any<dynamic>(<Future<dynamic>>[ready.future, run.exitCode]); diff --git a/dev/devicelab/bin/tasks/run_release_test.dart b/dev/devicelab/bin/tasks/run_release_test.dart index d3a8851ffd0c58a88e25831712fcf4a5db189ac3..7ebcb421825bcfd7a1713500b3ac6089e9a2a050 100644 --- a/dev/devicelab/bin/tasks/run_release_test.dart +++ b/dev/devicelab/bin/tasks/run_release_test.dart @@ -29,8 +29,8 @@ void main() { final List<String> stderr = <String>[]; int runExitCode; run.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('run:stdout: $line'); stdout.add(line); @@ -38,13 +38,13 @@ void main() { ready.complete(); }); run.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('run:stderr: $line'); stdout.add(line); }); - run.exitCode.then((int exitCode) { runExitCode = exitCode; }); + run.exitCode.then<void>((int exitCode) { runExitCode = exitCode; }); await Future.any<dynamic>(<Future<dynamic>>[ ready.future, run.exitCode ]); if (runExitCode != null) throw 'Failed to run test app; runner unexpected exited, with exit code $runExitCode.'; diff --git a/dev/devicelab/bin/tasks/service_extensions_test.dart b/dev/devicelab/bin/tasks/service_extensions_test.dart index dda1676dec13845814a6445d1e9ff095e113551f..898d76f53066735bb3f866788f55ef6e614dcde2 100644 --- a/dev/devicelab/bin/tasks/service_extensions_test.dart +++ b/dev/devicelab/bin/tasks/service_extensions_test.dart @@ -29,8 +29,8 @@ void main() { <String>['run', '--verbose', '-d', device.deviceId, 'lib/main.dart'], ); run.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('run:stdout: $line'); if (vmServicePort == null) { @@ -44,12 +44,12 @@ void main() { } }); run.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { stderr.writeln('run:stderr: $line'); }); - run.exitCode.then((int exitCode) { ok = false; }); + run.exitCode.then<void>((int exitCode) { ok = false; }); await Future.any<dynamic>(<Future<dynamic>>[ ready.future, run.exitCode ]); if (!ok) throw 'Failed to run test app.'; diff --git a/dev/devicelab/bin/tasks/technical_debt__cost.dart b/dev/devicelab/bin/tasks/technical_debt__cost.dart index dc2d076f7a371dfb371f932c547c42679176cfa8..7cc137d3018a41be51ca2e947c1a8f2ea11ea092 100644 --- a/dev/devicelab/bin/tasks/technical_debt__cost.dart +++ b/dev/devicelab/bin/tasks/technical_debt__cost.dart @@ -54,7 +54,7 @@ Future<double> findCostsForRepo() async { workingDirectory: flutterDirectory.path, ); double total = 0.0; - await for (String entry in git.stdout.transform(utf8.decoder).transform(const LineSplitter())) + await for (String entry in git.stdout.transform<String>(utf8.decoder).transform<String>(const LineSplitter())) total += await findCostsForFile(File(path.join(flutterDirectory.path, entry))); final int gitExitCode = await git.exitCode; if (gitExitCode != 0) diff --git a/dev/devicelab/lib/framework/adb.dart b/dev/devicelab/lib/framework/adb.dart index 8098d7091161237cc57773632fe11cee360d75e0..2ea21c8c4a3304f85fbb0689d343e366cf10fe6a 100644 --- a/dev/devicelab/lib/framework/adb.dart +++ b/dev/devicelab/lib/framework/adb.dart @@ -129,7 +129,7 @@ class AndroidDeviceDiscovery implements DeviceDiscovery { @override Future<Null> chooseWorkingDevice() async { final List<Device> allDevices = (await discoverDevices()) - .map((String id) => AndroidDevice(deviceId: id)) + .map<Device>((String id) => AndroidDevice(deviceId: id)) .toList(); if (allDevices.isEmpty) @@ -298,19 +298,19 @@ class AndroidDevice implements Device { await adb(<String>['logcat', '--clear']); final Process process = await startProcess(adbPath, <String>['-s', deviceId, 'logcat']); process.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('adb logcat: $line'); stream.sink.add(line); }, onDone: () { stdoutDone.complete(); }); process.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('adb logcat stderr: $line'); }, onDone: () { stderrDone.complete(); }); - process.exitCode.then((int exitCode) { + process.exitCode.then<void>((int exitCode) { print('adb logcat process terminated with exit code $exitCode'); if (!aborted) { stream.addError(BuildFailedError('adb logcat failed with exit code $exitCode.')); @@ -374,7 +374,7 @@ class IosDeviceDiscovery implements DeviceDiscovery { @override Future<Null> chooseWorkingDevice() async { final List<IosDevice> allDevices = (await discoverDevices()) - .map((String id) => IosDevice(deviceId: id)) + .map<IosDevice>((String id) => IosDevice(deviceId: id)) .toList(); if (allDevices.isEmpty) @@ -387,7 +387,7 @@ class IosDeviceDiscovery implements DeviceDiscovery { @override Future<List<String>> discoverDevices() async { final List<String> iosDeviceIDs = LineSplitter.split(await eval('idevice_id', <String>['-l'])) - .map((String line) => line.trim()) + .map<String>((String line) => line.trim()) .where((String line) => line.isNotEmpty) .toList(); if (iosDeviceIDs.isEmpty) diff --git a/dev/devicelab/lib/framework/manifest.dart b/dev/devicelab/lib/framework/manifest.dart index f5e28545a5e6d13c59409656fedfdba54a6f3e44..dc0eca378ce980ce56a43f2bf9b271c8c5630ad9 100644 --- a/dev/devicelab/lib/framework/manifest.dart +++ b/dev/devicelab/lib/framework/manifest.dart @@ -83,7 +83,7 @@ Manifest _validateAndParseManifest(Map<dynamic, dynamic> manifestYaml) { List<ManifestTask> _validateAndParseTasks(dynamic tasksYaml) { _checkType(tasksYaml is Map, tasksYaml, 'Value of "tasks"', 'dictionary'); final List<dynamic> sortedKeys = tasksYaml.keys.toList()..sort(); - return sortedKeys.map((dynamic taskName) => _validateAndParseTask(taskName, tasksYaml[taskName])).toList(); + return sortedKeys.map<ManifestTask>((dynamic taskName) => _validateAndParseTask(taskName, tasksYaml[taskName])).toList(); } ManifestTask _validateAndParseTask(dynamic taskName, dynamic taskYaml) { diff --git a/dev/devicelab/lib/framework/runner.dart b/dev/devicelab/lib/framework/runner.dart index e836d9f57062ec484d76fdee95c381613ba8dbfd..87ad3190095e2e6f9e5ed2bcdf9bad080ca88a10 100644 --- a/dev/devicelab/lib/framework/runner.dart +++ b/dev/devicelab/lib/framework/runner.dart @@ -44,8 +44,8 @@ Future<Map<String, dynamic>> runTask(String taskName, { bool silent = false }) a final Completer<int> port = Completer<int>(); final StreamSubscription<String> stdoutSub = runner.stdout - .transform(const Utf8Decoder()) - .transform(const LineSplitter()) + .transform<String>(const Utf8Decoder()) + .transform<String>(const LineSplitter()) .listen((String line) { if (!port.isCompleted) { final int portValue = parseServicePort(line, prefix: 'Observatory listening on '); @@ -58,8 +58,8 @@ Future<Map<String, dynamic>> runTask(String taskName, { bool silent = false }) a }); final StreamSubscription<String> stderrSub = runner.stderr - .transform(const Utf8Decoder()) - .transform(const LineSplitter()) + .transform<String>(const Utf8Decoder()) + .transform<String>(const LineSplitter()) .listen((String line) { stderr.writeln('[$taskName] [STDERR] $line'); }); diff --git a/dev/devicelab/lib/framework/utils.dart b/dev/devicelab/lib/framework/utils.dart index c90adf481e65df464656b096a71c8a7cf59c9d36..8ec8345056b59dc03d2ad1ac0dd75cefea2baa9b 100644 --- a/dev/devicelab/lib/framework/utils.dart +++ b/dev/devicelab/lib/framework/utils.dart @@ -172,14 +172,14 @@ Future<String> getCurrentFlutterRepoCommit() { return null; } - return inDirectory(flutterDirectory, () { + return inDirectory<String>(flutterDirectory, () { return eval('git', <String>['rev-parse', 'HEAD']); }); } Future<DateTime> getFlutterRepoCommitTimestamp(String commit) { // git show -s --format=%at 4b546df7f0b3858aaaa56c4079e5be1ba91fbb65 - return inDirectory(flutterDirectory, () async { + return inDirectory<DateTime>(flutterDirectory, () async { final String unixTimestamp = await eval('git', <String>[ 'show', '-s', @@ -235,7 +235,7 @@ Future<Process> startProcess( final ProcessInfo processInfo = ProcessInfo(command, process); _runningProcesses.add(processInfo); - process.exitCode.then((int exitCode) { + process.exitCode.then<void>((int exitCode) { print('"$executable" exit code: $exitCode'); _runningProcesses.remove(processInfo); }); @@ -273,14 +273,14 @@ Future<int> exec( final Completer<Null> stdoutDone = Completer<Null>(); final Completer<Null> stderrDone = Completer<Null>(); process.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('stdout: $line'); }, onDone: () { stdoutDone.complete(); }); process.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('stderr: $line'); }, onDone: () { stderrDone.complete(); }); @@ -310,15 +310,15 @@ Future<String> eval( final Completer<Null> stdoutDone = Completer<Null>(); final Completer<Null> stderrDone = Completer<Null>(); process.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('stdout: $line'); output.writeln(line); }, onDone: () { stdoutDone.complete(); }); process.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('stderr: $line'); }, onDone: () { stderrDone.complete(); }); @@ -427,11 +427,11 @@ Future<Null> getFlutter(String revision) async { flutterDirectory.deleteSync(recursive: true); } - await inDirectory(flutterDirectory.parent, () async { + await inDirectory<void>(flutterDirectory.parent, () async { await exec('git', <String>['clone', 'https://github.com/flutter/flutter.git']); }); - await inDirectory(flutterDirectory, () async { + await inDirectory<void>(flutterDirectory, () async { await exec('git', <String>['checkout', revision]); }); diff --git a/dev/devicelab/lib/tasks/analysis.dart b/dev/devicelab/lib/tasks/analysis.dart index 495935895d032f9817b5fc92e3a13089e2a08e15..cbf4366d5625509d33f1cbbbce10a004325641b9 100644 --- a/dev/devicelab/lib/tasks/analysis.dart +++ b/dev/devicelab/lib/tasks/analysis.dart @@ -22,7 +22,7 @@ const int _kRunsPerBenchmark = 3; Directory get _megaGalleryDirectory => dir(path.join(Directory.systemTemp.path, 'mega_gallery')); Future<TaskResult> analyzerBenchmarkTask() async { - await inDirectory(flutterDirectory, () async { + await inDirectory<void>(flutterDirectory, () async { rmTree(_megaGalleryDirectory); mkdirs(_megaGalleryDirectory); await dart(<String>['dev/tools/mega_gallery.dart', '--out=${_megaGalleryDirectory.path}']); @@ -74,7 +74,7 @@ abstract class _Benchmark { Future<double> execute(int iteration, int targetIterations) async { section('Analyze $title ${watch ? 'with watcher' : ''} - ${iteration + 1} / $targetIterations'); final Stopwatch stopwatch = Stopwatch(); - await inDirectory(directory, () async { + await inDirectory<void>(directory, () async { stopwatch.start(); await flutter('analyze', options: options); stopwatch.stop(); diff --git a/dev/devicelab/lib/tasks/gallery.dart b/dev/devicelab/lib/tasks/gallery.dart index 6044e4e19666cc4f6c07e63931f40aa578a71917..7fdc271466d2c8d41d53119ebf33f06338ccaf3f 100644 --- a/dev/devicelab/lib/tasks/gallery.dart +++ b/dev/devicelab/lib/tasks/gallery.dart @@ -28,7 +28,7 @@ class GalleryTransitionTest { final String deviceId = device.deviceId; final Directory galleryDirectory = dir('${flutterDirectory.path}/examples/flutter_gallery'); - await inDirectory(galleryDirectory, () async { + await inDirectory<void>(galleryDirectory, () async { await flutter('packages', options: <String>['get']); if (deviceOperatingSystem == DeviceOperatingSystem.ios) diff --git a/dev/devicelab/lib/tasks/hot_mode_tests.dart b/dev/devicelab/lib/tasks/hot_mode_tests.dart index c938318bde4cc42b7eb3bb3feee92439244cc529..e24ff66d12cff4c31e8a578e59e57bc7715f803a 100644 --- a/dev/devicelab/lib/tasks/hot_mode_tests.dart +++ b/dev/devicelab/lib/tasks/hot_mode_tests.dart @@ -29,11 +29,11 @@ TaskFunction createHotModeTest() { int hotReloadCount = 0; Map<String, dynamic> twoReloadsData; Map<String, dynamic> freshRestartReloadsData; - await inDirectory(flutterDirectory, () async { + await inDirectory<void>(flutterDirectory, () async { rmTree(_editedFlutterGalleryDir); mkdirs(_editedFlutterGalleryDir); recursiveCopy(flutterGalleryDir, _editedFlutterGalleryDir); - await inDirectory(_editedFlutterGalleryDir, () async { + await inDirectory<void>(_editedFlutterGalleryDir, () async { if (deviceOperatingSystem == DeviceOperatingSystem.ios) await prepareProvisioningCertificates(_editedFlutterGalleryDir.path); { @@ -46,8 +46,8 @@ TaskFunction createHotModeTest() { final Completer<Null> stdoutDone = Completer<Null>(); final Completer<Null> stderrDone = Completer<Null>(); process.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { if (line.contains('\] Reloaded ')) { if (hotReloadCount == 0) { @@ -72,8 +72,8 @@ TaskFunction createHotModeTest() { stdoutDone.complete(); }); process.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('stderr: $line'); }, onDone: () { @@ -99,8 +99,8 @@ TaskFunction createHotModeTest() { final Completer<Null> stdoutDone = Completer<Null>(); final Completer<Null> stderrDone = Completer<Null>(); process.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { if (line.contains('\] Reloaded ')) { process.stdin.writeln('q'); @@ -110,8 +110,8 @@ TaskFunction createHotModeTest() { stdoutDone.complete(); }); process.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { print('stderr: $line'); }, onDone: () { diff --git a/dev/devicelab/lib/tasks/integration_tests.dart b/dev/devicelab/lib/tasks/integration_tests.dart index 0064c1b5a466ef7098f400babec34f7dda58f836..05ec55642240be16e6c912e97cc19fe7c8fcd21e 100644 --- a/dev/devicelab/lib/tasks/integration_tests.dart +++ b/dev/devicelab/lib/tasks/integration_tests.dart @@ -73,7 +73,7 @@ class DriverTest { final List<String> extraOptions; Future<TaskResult> call() { - return inDirectory(testDirectory, () async { + return inDirectory<TaskResult>(testDirectory, () async { final Device device = await devices.workingDevice; await device.unlock(); final String deviceId = device.deviceId; diff --git a/dev/devicelab/lib/tasks/integration_ui.dart b/dev/devicelab/lib/tasks/integration_ui.dart index c40495ff08fa525794d38d77c4c7b493e5fe906d..335130fcc75efc35ca6b658530d464327f0de1f7 100644 --- a/dev/devicelab/lib/tasks/integration_ui.dart +++ b/dev/devicelab/lib/tasks/integration_ui.dart @@ -15,7 +15,7 @@ Future<TaskResult> runEndToEndTests() async { await device.unlock(); final String deviceId = device.deviceId; final Directory testDirectory = dir('${flutterDirectory.path}/dev/integration_tests/ui'); - await inDirectory(testDirectory, () async { + await inDirectory<void>(testDirectory, () async { await flutter('packages', options: <String>['get']); if (deviceOperatingSystem == DeviceOperatingSystem.ios) diff --git a/dev/devicelab/lib/tasks/microbenchmarks.dart b/dev/devicelab/lib/tasks/microbenchmarks.dart index ae96483bd2047600ffebb3e95a2db7cc35a60f7f..91892be2e6403544a13e4a027b3a0d4df21dd262 100644 --- a/dev/devicelab/lib/tasks/microbenchmarks.dart +++ b/dev/devicelab/lib/tasks/microbenchmarks.dart @@ -78,8 +78,8 @@ Future<Map<String, double>> _readJsonResults(Process process) { final Completer<Map<String, double>> completer = Completer<Map<String, double>>(); final StreamSubscription<String> stderrSub = process.stderr - .transform(const Utf8Decoder()) - .transform(const LineSplitter()) + .transform<String>(const Utf8Decoder()) + .transform<String>(const LineSplitter()) .listen((String line) { stderr.writeln('[STDERR] $line'); }); @@ -87,8 +87,8 @@ Future<Map<String, double>> _readJsonResults(Process process) { bool processWasKilledIntentionally = false; bool resultsHaveBeenParsed = false; final StreamSubscription<String> stdoutSub = process.stdout - .transform(const Utf8Decoder()) - .transform(const LineSplitter()) + .transform<String>(const Utf8Decoder()) + .transform<String>(const LineSplitter()) .listen((String line) async { print(line); diff --git a/dev/devicelab/lib/tasks/perf_tests.dart b/dev/devicelab/lib/tasks/perf_tests.dart index 345fd7c588d256e944a0456a112bc11813187bf2..1c0901201efd77848acac90ba41975cc9074b7a4 100644 --- a/dev/devicelab/lib/tasks/perf_tests.dart +++ b/dev/devicelab/lib/tasks/perf_tests.dart @@ -75,7 +75,7 @@ TaskFunction createBasicMaterialCompileTest() { rmTree(sampleDir); - await inDirectory(Directory.systemTemp, () async { + await inDirectory<void>(Directory.systemTemp, () async { await flutter('create', options: <String>[sampleAppName]); }); @@ -95,7 +95,7 @@ class StartupTest { final bool reportMetrics; Future<TaskResult> run() async { - return await inDirectory(testDirectory, () async { + return await inDirectory<TaskResult>(testDirectory, () async { final String deviceId = (await devices.workingDevice).deviceId; await flutter('packages', options: <String>['get']); @@ -131,7 +131,7 @@ class PerfTest { final String timelineFileName; Future<TaskResult> run() { - return inDirectory(testDirectory, () async { + return inDirectory<TaskResult>(testDirectory, () async { final Device device = await devices.workingDevice; await device.unlock(); final String deviceId = device.deviceId; @@ -183,7 +183,7 @@ class CompileTest { final bool reportPackageContentSizes; Future<TaskResult> run() async { - return await inDirectory(testDirectory, () async { + return await inDirectory<TaskResult>(testDirectory, () async { final Device device = await devices.workingDevice; await device.unlock(); await flutter('packages', options: <String>['get']); @@ -402,7 +402,7 @@ class MemoryTest { Device _device; Future<TaskResult> run() { - return inDirectory(project, () async { + return inDirectory<TaskResult>(project, () async { // This test currently only works on Android, because device.logcat, // device.getMemoryStats, etc, aren't implemented for iOS. diff --git a/dev/devicelab/lib/tasks/sample_catalog_generator.dart b/dev/devicelab/lib/tasks/sample_catalog_generator.dart index ef52a3d6253da7e05056085e5c873c7ba608e6ec..376cc67abc03b4bc8953bc716acb35aa3ef11d30 100644 --- a/dev/devicelab/lib/tasks/sample_catalog_generator.dart +++ b/dev/devicelab/lib/tasks/sample_catalog_generator.dart @@ -18,7 +18,7 @@ Future<TaskResult> samplePageCatalogGenerator(String authorizationToken) async { final String deviceId = device.deviceId; final Directory catalogDirectory = dir('${flutterDirectory.path}/examples/catalog'); - await inDirectory(catalogDirectory, () async { + await inDirectory<void>(catalogDirectory, () async { await flutter('packages', options: <String>['get']); final bool isIosDevice = deviceOperatingSystem == DeviceOperatingSystem.ios; diff --git a/dev/devicelab/lib/tasks/save_catalog_screenshots.dart b/dev/devicelab/lib/tasks/save_catalog_screenshots.dart index 727358bd19c0bd31685527d08fcd253f90823215..e1bd4d07019fe0939f7f19c3b7c4e92a7eb90c94 100644 --- a/dev/devicelab/lib/tasks/save_catalog_screenshots.dart +++ b/dev/devicelab/lib/tasks/save_catalog_screenshots.dart @@ -65,7 +65,7 @@ class Upload { } 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'); - logMessage(await response.transform(utf8.decoder).join()); + logMessage(await response.transform<String>(utf8.decoder).join()); } return response.statusCode == HttpStatus.ok; } on TimeoutException catch (_) { @@ -104,7 +104,7 @@ Future<Null> saveScreenshots(List<String> fromPaths, List<String> largeNames, Li while (uploads.any(Upload.isNotComplete)) { final HttpClient client = HttpClient(); uploads = uploads.where(Upload.isNotComplete).toList(); - await Future.wait(uploads.map((Upload upload) => upload.run(client))); + await Future.wait<bool>(uploads.map<Future<bool>>((Upload upload) => upload.run(client))); client.close(force: true); } } diff --git a/dev/integration_tests/android_semantics_testing/lib/main.dart b/dev/integration_tests/android_semantics_testing/lib/main.dart index 1b7bf656e5ad4627c4225ed67f6c2c43c6abdc72..d0f52854ae92225cd1353bae8d3c9c0c632e27d4 100644 --- a/dev/integration_tests/android_semantics_testing/lib/main.dart +++ b/dev/integration_tests/android_semantics_testing/lib/main.dart @@ -59,7 +59,7 @@ class TestApp extends StatelessWidget { builder: (BuildContext context) { return Scaffold( body: ListView( - children: routes.map((String value) { + children: routes.map<Widget>((String value) { return MaterialButton( child: Text(value), onPressed: () { diff --git a/dev/integration_tests/android_views/lib/main.dart b/dev/integration_tests/android_views/lib/main.dart index e1d0679a2d72e99ee6aa328d251068843f1ead3b..a9e79faf266e94142d377dd446941a75bbed95de 100644 --- a/dev/integration_tests/android_views/lib/main.dart +++ b/dev/integration_tests/android_views/lib/main.dart @@ -123,7 +123,7 @@ class PlatformViewState extends State<PlatformViewPage> { final List<dynamic> unTypedRecordedEvents = codec.decodeMessage(data); final List<Map<String, dynamic>> recordedEvents = unTypedRecordedEvents .cast<Map<dynamic, dynamic>>() - .map((Map<dynamic, dynamic> e) =>e.cast<String, dynamic>()) + .map<Map<String, dynamic>>((Map<dynamic, dynamic> e) =>e.cast<String, dynamic>()) .toList(); await channel.invokeMethod('pipeFlutterViewEvents'); await viewChannel.invokeMethod('pipeTouchEvents'); diff --git a/dev/manual_tests/lib/animated_icons.dart b/dev/manual_tests/lib/animated_icons.dart index 3cf6f10e1f14d2277034f7822e3ac16413e7f2d1..b857423982b1d840021989f237ce17ee28ba44a5 100644 --- a/dev/manual_tests/lib/animated_icons.dart +++ b/dev/manual_tests/lib/animated_icons.dart @@ -22,7 +22,7 @@ class IconsList extends StatelessWidget { @override Widget build(BuildContext context) { return ListView( - children: samples.map((IconSample s) => IconSampleRow(s)).toList(), + children: samples.map<IconSampleRow>((IconSample s) => IconSampleRow(s)).toList(), ); } } diff --git a/dev/manual_tests/lib/material_arc.dart b/dev/manual_tests/lib/material_arc.dart index 5b7fadaef35fea607144711d9817cc877324d22d..4d9ece5054061cdd0959a22758c9f0f64b8a993c 100644 --- a/dev/manual_tests/lib/material_arc.dart +++ b/dev/manual_tests/lib/material_arc.dart @@ -452,7 +452,7 @@ class _AnimationDemoState extends State<AnimationDemo> with TickerProviderStateM appBar: AppBar( title: const Text('Animation'), bottom: TabBar( - tabs: _allDemos.map((_ArcDemo demo) => Tab(text: demo.title)).toList(), + tabs: _allDemos.map<Tab>((_ArcDemo demo) => Tab(text: demo.title)).toList(), ), ), floatingActionButton: Builder( @@ -466,7 +466,7 @@ class _AnimationDemoState extends State<AnimationDemo> with TickerProviderStateM }, ), body: TabBarView( - children: _allDemos.map((_ArcDemo demo) => demo.builder(demo)).toList() + children: _allDemos.map<Widget>((_ArcDemo demo) => demo.builder(demo)).toList() ) ) ); diff --git a/dev/manual_tests/lib/page_view.dart b/dev/manual_tests/lib/page_view.dart index 5487f084b6ea10cb5ee42f167b1a91fd481bafe8..b882f3132f36156b4a8c0178cc93c441ae747bb9 100644 --- a/dev/manual_tests/lib/page_view.dart +++ b/dev/manual_tests/lib/page_view.dart @@ -119,7 +119,7 @@ class PageViewAppState extends State<PageViewApp> { Widget _buildBody(BuildContext context) { return PageView( - children: cardModels.map(buildCard).toList(), + children: cardModels.map<Widget>(buildCard).toList(), // TODO(abarth): itemsWrap: itemsWrap, scrollDirection: scrollDirection, ); diff --git a/dev/manual_tests/lib/text.dart b/dev/manual_tests/lib/text.dart index 938b532b02a9f1db99ebf9a41970b757b9b61688..0244f3e6c05de58f710b5509526a20608b9c2c8b 100644 --- a/dev/manual_tests/lib/text.dart +++ b/dev/manual_tests/lib/text.dart @@ -189,7 +189,7 @@ class _FuzzerState extends State<Fuzzer> with SingleTickerProviderStateMixin { switch (_random.nextInt(10)) { case 0: if (value == null) - return pickFromList(_random, Colors.primaries)[(_random.nextInt(9) + 1) * 100]; + return pickFromList<MaterialColor>(_random, Colors.primaries)[(_random.nextInt(9) + 1) * 100]; switch (_random.nextInt(4)) { case 0: return value.withAlpha(value.alpha + _random.nextInt(10) - 5); @@ -240,7 +240,7 @@ class _FuzzerState extends State<Fuzzer> with SingleTickerProviderStateMixin { case 0: return null; case 1: - return pickFromList(_random, TextDecorationStyle.values); + return pickFromList<TextDecorationStyle>(_random, TextDecorationStyle.values); } return value; } @@ -250,7 +250,7 @@ class _FuzzerState extends State<Fuzzer> with SingleTickerProviderStateMixin { case 0: return null; case 1: - return pickFromList(_random, FontWeight.values); + return pickFromList<FontWeight>(_random, FontWeight.values); } return value; } @@ -260,7 +260,7 @@ class _FuzzerState extends State<Fuzzer> with SingleTickerProviderStateMixin { case 0: return null; case 1: - return pickFromList(_random, FontStyle.values); + return pickFromList<FontStyle>(_random, FontStyle.values); } return value; } @@ -938,7 +938,7 @@ class _PaintingState extends State<Painting> with SingleTickerProviderStateMixin if (mounted && intrinsicKey.currentContext.size.height != controlKey.currentContext.size.height) { debugPrint('Found some text that unexpectedly renders at different heights.'); debugPrint('Text: $_text'); - debugPrint(_text.runes.map((int index) => 'U+' + index.toRadixString(16).padLeft(4, '0')).join(' ')); + debugPrint(_text.runes.map<String>((int index) => 'U+' + index.toRadixString(16).padLeft(4, '0')).join(' ')); setState(() { _ticker.stop(); }); @@ -1045,7 +1045,7 @@ class _PaintingState extends State<Painting> with SingleTickerProviderStateMixin FlatButton( onPressed: _ticker.isActive ? null : () { print('The currently visible text is: $_text'); - print(_text.runes.map((int value) => 'U+${value.toRadixString(16).padLeft(4, '0').toUpperCase()}').join(' ')); + print(_text.runes.map<String>((int value) => 'U+${value.toRadixString(16).padLeft(4, '0').toUpperCase()}').join(' ')); }, child: const Text('DUMP TEXT TO LOGS'), ), @@ -2109,7 +2109,7 @@ int randomCharacter(math.Random random) { Range(0x2ceb0, 0x2ebe0), Range(0x2f800, 0x2fa1d), ]; - final Range range = pickFromList(random, characterRanges); + final Range range = pickFromList<Range>(random, characterRanges); if (range.start == range.end) return range.start; return range.start + random.nextInt(range.end - range.start); diff --git a/dev/manual_tests/test/card_collection_test.dart b/dev/manual_tests/test/card_collection_test.dart index 3ed2a1b9f19ed9e84e8b5e0b3cb2615824c6d167..8de4efbf2b347fe4b5a3f74eb623a1041a89b3ad 100644 --- a/dev/manual_tests/test/card_collection_test.dart +++ b/dev/manual_tests/test/card_collection_test.dart @@ -12,7 +12,7 @@ import 'mock_image_http.dart'; void main() { testWidgets('Card Collection smoke test', (WidgetTester tester) async { - HttpOverrides.runZoned(() async { + HttpOverrides.runZoned<Future<void>>(() async { card_collection.main(); // builds the app and schedules a frame but doesn't trigger one await tester.pump(); // see https://github.com/flutter/flutter/issues/1865 await tester.pump(); // triggers a frame diff --git a/dev/manual_tests/test/color_testing_demo_test.dart b/dev/manual_tests/test/color_testing_demo_test.dart index 9c3b16e18bd115a496650c2f977e367a44a63540..eca5509dbb335d6adba825af643e9b248abbea02 100644 --- a/dev/manual_tests/test/color_testing_demo_test.dart +++ b/dev/manual_tests/test/color_testing_demo_test.dart @@ -12,7 +12,7 @@ import 'mock_image_http.dart'; void main() { testWidgets('Color testing demo smoke test', (WidgetTester tester) async { - HttpOverrides.runZoned(() async { + HttpOverrides.runZoned<Future<void>>(() async { color_testing_demo.main(); // builds the app and schedules a frame but doesn't trigger one await tester.pump(); // see https://github.com/flutter/flutter/issues/1865 await tester.pump(); // triggers a frame diff --git a/dev/tools/dartdoc.dart b/dev/tools/dartdoc.dart index 20ca85d864999edb23340afc46539aa1ccf0e459..cde62e9205afc128bf2e88fb83f2de1ebf72cde5 100644 --- a/dev/tools/dartdoc.dart +++ b/dev/tools/dartdoc.dart @@ -146,7 +146,7 @@ Future<Null> main(List<String> arguments) async { } String quote(String arg) => arg.contains(' ') ? "'$arg'" : arg; - print('Executing: (cd dev/docs ; $pubExecutable ${dartdocArgs.map(quote).join(' ')})'); + print('Executing: (cd dev/docs ; $pubExecutable ${dartdocArgs.map<String>(quote).join(' ')})'); process = await Process.start( pubExecutable, @@ -302,7 +302,7 @@ void putRedirectInOldIndexLocation() { } List<String> findPackageNames() { - return findPackages().map((FileSystemEntity file) => path.basename(file.path)).toList(); + return findPackages().map<String>((FileSystemEntity file) => path.basename(file.path)).toList(); } /// Finds all packages in the Flutter SDK @@ -350,8 +350,8 @@ void printStream(Stream<List<int>> stream, { String prefix = '', List<Pattern> f assert(prefix != null); assert(filter != null); stream - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { if (!filter.any((Pattern pattern) => line.contains(pattern))) print('$prefix$line'.trim()); diff --git a/dev/tools/gen_date_localizations.dart b/dev/tools/gen_date_localizations.dart index 6a72ced3544a53df18a5cd5e063ab2261303863d..59c3a42b19c3bc1b44b4d35274a63df7380488f7 100644 --- a/dev/tools/gen_date_localizations.dart +++ b/dev/tools/gen_date_localizations.dart @@ -135,7 +135,7 @@ String _jsonToMap(dynamic json) { } if (json is Iterable) - return '<dynamic>[${json.map(_jsonToMap).join(',')}]'; + return '<dynamic>[${json.map<String>(_jsonToMap).join(',')}]'; if (json is Map<String, dynamic>) { final StringBuffer buffer = StringBuffer('<String, dynamic>{'); diff --git a/dev/tools/gen_localizations.dart b/dev/tools/gen_localizations.dart index da4a34c14436c93ff32ea03809eb5ba75d1ba869..7419912f65272c64a787504ced7a302576f27718 100644 --- a/dev/tools/gen_localizations.dart +++ b/dev/tools/gen_localizations.dart @@ -202,7 +202,7 @@ String generateTranslationBundles() { /// /// * [getTranslation], whose documentation describes these values. final Set<String> kSupportedLanguages = HashSet<String>.from(const <String>[ -${languageCodes.map((String value) => " '$value', // ${describeLocale(value)}").toList().join('\n')} +${languageCodes.map<String>((String value) => " '$value', // ${describeLocale(value)}").toList().join('\n')} ]); /// Creates a [GlobalMaterialLocalizations] instance for the given `locale`. diff --git a/dev/tools/lib/roll_dev.dart b/dev/tools/lib/roll_dev.dart index 143db305bba0b71ff1ccf0c2c94c7c39d1989ddd..d513ba0c0ad891115aca8d4b0bdc73392b29d6c3 100644 --- a/dev/tools/lib/roll_dev.dart +++ b/dev/tools/lib/roll_dev.dart @@ -105,7 +105,7 @@ void main(List<String> args) { exit(1); } - final List<int> parts = match.groups(<int>[1, 2, 3]).map(int.parse).toList(); + final List<int> parts = match.groups(<int>[1, 2, 3]).map<int>(int.parse).toList(); if (match.group(4) == '0') { print('This commit has already been released, as version ${parts.join(".")}.'); diff --git a/dev/tools/localizations_utils.dart b/dev/tools/localizations_utils.dart index bcfadd59515008a4f46e03ba5ce3a3e4eea52127..dfd7a83cffc98727b18d5728b6897db60544e7b9 100644 --- a/dev/tools/localizations_utils.dart +++ b/dev/tools/localizations_utils.dart @@ -29,7 +29,7 @@ void checkCwdIsRepoRoot(String commandName) { String camelCase(String locale) { return locale .split('_') - .map((String part) => part.substring(0, 1).toUpperCase() + part.substring(1).toLowerCase()) + .map<String>((String part) => part.substring(0, 1).toUpperCase() + part.substring(1).toLowerCase()) .join(''); } @@ -91,7 +91,7 @@ Future<void> precacheLanguageAndRegionTags() async { final HttpClient client = HttpClient(); final HttpClientRequest request = await client.getUrl(Uri.parse(registry)); final HttpClientResponse response = await request.close(); - final String body = (await response.transform(utf8.decoder).toList()).join(''); + final String body = (await response.transform<String>(utf8.decoder).toList()).join(''); client.close(force: true); final List<Map<String, List<String>>> sections = body.split('%%').skip(1).map<Map<String, List<String>>>(_parseSection).toList(); for (Map<String, List<String>> section in sections) { diff --git a/dev/tools/update_icons.dart b/dev/tools/update_icons.dart index 43a1f795c99e1a6234f36b3fe64752011b084878..1984cdf2ce1aa98ddb6deae97fb35ad7a27339c5 100644 --- a/dev/tools/update_icons.dart +++ b/dev/tools/update_icons.dart @@ -199,9 +199,9 @@ String regenerateIconsFile(String iconData, String codepointData) { String generateIconDeclarations(String codepointData) { return LineSplitter.split(codepointData) - .map((String l) => l.trim()) + .map<String>((String l) => l.trim()) .where((String l) => l.isNotEmpty) - .map(getIconDeclaration) + .map<String>(getIconDeclaration) .join(); } diff --git a/dev/tools/vitool/lib/vitool.dart b/dev/tools/vitool/lib/vitool.dart index f89a93ac0ba995bbd73dd4dd2d1d0f5449dcce57..0e1ab4e9a8ee399804b91d51f776cb4e3aa013ff 100644 --- a/dev/tools/vitool/lib/vitool.dart +++ b/dev/tools/vitool/lib/vitool.dart @@ -314,7 +314,7 @@ class SvgPath { SvgPath applyTransform(_Transform transform) { final List<SvgPathCommand> transformedCommands = - commands.map((SvgPathCommand c) => c.applyTransform(transform)).toList(); + commands.map<SvgPathCommand>((SvgPathCommand c) => c.applyTransform(transform)).toList(); return SvgPath(id, transformedCommands, opacity: opacity * transform.opacity); } @@ -400,7 +400,7 @@ class SvgPathCommandBuilder { SvgPathCommand build(String type, List<Point<double>> points) { List<Point<double>> absPoints = points; if (_isRelativeCommand(type)) { - absPoints = points.map((Point<double> p) => p + lastPoint).toList(); + absPoints = points.map<Point<double>>((Point<double> p) => p + lastPoint).toList(); } if (type == 'M' || type == 'm') diff --git a/examples/catalog/bin/sample_page.dart b/examples/catalog/bin/sample_page.dart index 42afe9288c1c74a0c52b8c6705cce250354a5a7a..d2780412f730973cbf0b25dd7fb902bd2c176e41 100644 --- a/examples/catalog/bin/sample_page.dart +++ b/examples/catalog/bin/sample_page.dart @@ -89,7 +89,7 @@ class SampleInfo { final String classNames = commentValues['classes']; if (classNames == null) return const <String>[]; - return classNames.split(',').map((String s) => s.trim()).where((String s) => s.isNotEmpty); + return classNames.split(',').map<String>((String s) => s.trim()).where((String s) => s.isNotEmpty); } // The relative import path for this sample, like '../lib/foo.dart'. @@ -163,7 +163,7 @@ void generate(String commit) { final String entryTemplate = inputFile('bin', 'entry.md.template').readAsStringSync(); // Write the sample catalog's home page: index.md - final Iterable<String> entries = samples.map((SampleInfo sample) { + final Iterable<String> entries = samples.map<String>((SampleInfo sample) { return expandTemplate(entryTemplate, sample.commentValues); }); writeExpandedTemplate( @@ -195,7 +195,7 @@ void generate(String commit) { } } for (String className in classToSamples.keys) { - final Iterable<String> entries = classToSamples[className].map((SampleInfo sample) { + final Iterable<String> entries = classToSamples[className].map<String>((SampleInfo sample) { return expandTemplate(entryTemplate, sample.commentValues); }); writeExpandedTemplate( @@ -215,10 +215,10 @@ void generate(String commit) { outputFile('screenshot.dart', driverDirectory), inputFile('bin', 'screenshot.dart.template').readAsStringSync(), <String, String>{ - 'imports': samples.map((SampleInfo page) { + 'imports': samples.map<String>((SampleInfo page) { return "import '${page.importPath}' show ${page.sampleClass};\n"; }).toList().join(), - 'widgets': samples.map((SampleInfo sample) { + 'widgets': samples.map<String>((SampleInfo sample) { return 'new ${sample.sampleClass}(),\n'; }).toList().join(), }, @@ -230,7 +230,7 @@ void generate(String commit) { outputFile('screenshot_test.dart', driverDirectory), inputFile('bin', 'screenshot_test.dart.template').readAsStringSync(), <String, String>{ - 'paths': samples.map((SampleInfo sample) { + 'paths': samples.map<String>((SampleInfo sample) { return "'${outputFile(sample.sourceName + '.png').path}'"; }).toList().join(',\n'), }, diff --git a/examples/catalog/lib/app_bar_bottom.dart b/examples/catalog/lib/app_bar_bottom.dart index fd6be4dd14c4dbba92f3f95d4b00c51059016d33..2fd1a60fe63bf9918a613fdf86a3f4bfcc90f41e 100644 --- a/examples/catalog/lib/app_bar_bottom.dart +++ b/examples/catalog/lib/app_bar_bottom.dart @@ -63,7 +63,7 @@ class _AppBarBottomSampleState extends State<AppBarBottomSample> with SingleTick ), body: TabBarView( controller: _tabController, - children: choices.map((Choice choice) { + children: choices.map<Widget>((Choice choice) { return Padding( padding: const EdgeInsets.all(16.0), child: ChoiceCard(choice: choice), diff --git a/examples/catalog/lib/basic_app_bar.dart b/examples/catalog/lib/basic_app_bar.dart index 3638d64f6070c2325645ce911bc241a22d03ca67..6bf4cac2cc399e1a74dd7432dda6a37def983cfb 100644 --- a/examples/catalog/lib/basic_app_bar.dart +++ b/examples/catalog/lib/basic_app_bar.dart @@ -37,7 +37,7 @@ class _BasicAppBarSampleState extends State<BasicAppBarSample> { PopupMenuButton<Choice>( // overflow menu onSelected: _select, itemBuilder: (BuildContext context) { - return choices.skip(2).map((Choice choice) { + return choices.skip(2).map<PopupMenuItem<Choice>>((Choice choice) { return PopupMenuItem<Choice>( value: choice, child: Text(choice.title), diff --git a/examples/catalog/lib/custom_semantics.dart b/examples/catalog/lib/custom_semantics.dart index f9dc9e4316bdda071c1d1fd373e998057b18a918..e8bd86cb42aadb0895538dffe418e907e92bd75b 100644 --- a/examples/catalog/lib/custom_semantics.dart +++ b/examples/catalog/lib/custom_semantics.dart @@ -50,7 +50,7 @@ class AdjustableDropdownListTile extends StatelessWidget { trailing: DropdownButton<String>( value: value, onChanged: onChanged, - items: items.map((String item) { + items: items.map<DropdownMenuItem<String>>((String item) { return DropdownMenuItem<String>( value: item, child: Text(item), diff --git a/examples/catalog/lib/expansion_tile_sample.dart b/examples/catalog/lib/expansion_tile_sample.dart index 9e0264d0304ec9f6ba98bcdd067e67f6b8491d65..1d9fdfe3529533eaa2adb2201d94f88f88b64263 100644 --- a/examples/catalog/lib/expansion_tile_sample.dart +++ b/examples/catalog/lib/expansion_tile_sample.dart @@ -78,7 +78,7 @@ class EntryItem extends StatelessWidget { return ExpansionTile( key: PageStorageKey<Entry>(root), title: Text(root.title), - children: root.children.map(_buildTiles).toList(), + children: root.children.map<Widget>(_buildTiles).toList(), ); } diff --git a/examples/catalog/lib/tabbed_app_bar.dart b/examples/catalog/lib/tabbed_app_bar.dart index 6bcfc1d326d9d659527fdd6e73e883b927eaf2d5..99aba1e52021be1ccbe19241f373a92f4094676f 100644 --- a/examples/catalog/lib/tabbed_app_bar.dart +++ b/examples/catalog/lib/tabbed_app_bar.dart @@ -15,7 +15,7 @@ class TabbedAppBarSample extends StatelessWidget { title: const Text('Tabbed AppBar'), bottom: TabBar( isScrollable: true, - tabs: choices.map((Choice choice) { + tabs: choices.map<Widget>((Choice choice) { return Tab( text: choice.title, icon: Icon(choice.icon), @@ -24,7 +24,7 @@ class TabbedAppBarSample extends StatelessWidget { ), ), body: TabBarView( - children: choices.map((Choice choice) { + children: choices.map<Widget>((Choice choice) { return Padding( padding: const EdgeInsets.all(16.0), child: ChoiceCard(choice: choice), diff --git a/examples/flutter_gallery/lib/demo/animation/home.dart b/examples/flutter_gallery/lib/demo/animation/home.dart index 4a0de2d54b88293372cf845cc035a7a5f235c8aa..6f3d9e4cb5b5577568dbccff52c9f91786706f2a 100644 --- a/examples/flutter_gallery/lib/demo/animation/home.dart +++ b/examples/flutter_gallery/lib/demo/animation/home.dart @@ -493,7 +493,7 @@ class _AnimationDemoHomeState extends State<AnimationDemoHome> { } Iterable<Widget> _detailItemsFor(Section section) { - final Iterable<Widget> detailItems = section.details.map((SectionDetail detail) { + final Iterable<Widget> detailItems = section.details.map<Widget>((SectionDetail detail) { return SectionDetailView(detail: detail); }); return ListTile.divideTiles(context: context, tiles: detailItems); @@ -591,7 +591,7 @@ class _AnimationDemoHomeState extends State<AnimationDemoHome> { }, child: PageView( controller: _detailsPageController, - children: allSections.map((Section section) { + children: allSections.map<Widget>((Section section) { return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: _detailItemsFor(section).toList(), diff --git a/examples/flutter_gallery/lib/demo/colors_demo.dart b/examples/flutter_gallery/lib/demo/colors_demo.dart index a38999ba2d639c50c65071caf4f0657ba2026117..59a94274f835ec732d7e34f361c312d66d3ed44b 100644 --- a/examples/flutter_gallery/lib/demo/colors_demo.dart +++ b/examples/flutter_gallery/lib/demo/colors_demo.dart @@ -99,7 +99,7 @@ class PaletteTabView extends StatelessWidget { final TextTheme textTheme = Theme.of(context).textTheme; final TextStyle whiteTextStyle = textTheme.body1.copyWith(color: Colors.white); final TextStyle blackTextStyle = textTheme.body1.copyWith(color: Colors.black); - final List<Widget> colorItems = primaryKeys.map((int index) { + final List<Widget> colorItems = primaryKeys.map<Widget>((int index) { return DefaultTextStyle( style: index > colors.threshold ? whiteTextStyle : blackTextStyle, child: ColorItem(index: index, color: colors.primary[index]), @@ -107,7 +107,7 @@ class PaletteTabView extends StatelessWidget { }).toList(); if (colors.accent != null) { - colorItems.addAll(accentKeys.map((int index) { + colorItems.addAll(accentKeys.map<Widget>((int index) { return DefaultTextStyle( style: index > colors.threshold ? whiteTextStyle : blackTextStyle, child: ColorItem(index: index, color: colors.accent[index], prefix: 'A'), @@ -135,11 +135,11 @@ class ColorsDemo extends StatelessWidget { title: const Text('Colors'), bottom: TabBar( isScrollable: true, - tabs: allPalettes.map((Palette swatch) => Tab(text: swatch.name)).toList(), + tabs: allPalettes.map<Widget>((Palette swatch) => Tab(text: swatch.name)).toList(), ), ), body: TabBarView( - children: allPalettes.map((Palette colors) { + children: allPalettes.map<Widget>((Palette colors) { return PaletteTabView(colors: colors); }).toList(), ), diff --git a/examples/flutter_gallery/lib/demo/contacts_demo.dart b/examples/flutter_gallery/lib/demo/contacts_demo.dart index 3ff7e6f80d1ce6730b4c30c405d9c1cd95f57d86..5566f8c25aaed88ecf2699682d85c93b470aa859 100644 --- a/examples/flutter_gallery/lib/demo/contacts_demo.dart +++ b/examples/flutter_gallery/lib/demo/contacts_demo.dart @@ -54,7 +54,7 @@ class _ContactItem extends StatelessWidget { @override Widget build(BuildContext context) { final ThemeData themeData = Theme.of(context); - final List<Widget> columnChildren = lines.sublist(0, lines.length - 1).map((String line) => Text(line)).toList(); + final List<Widget> columnChildren = lines.sublist(0, lines.length - 1).map<Widget>((String line) => Text(line)).toList(); columnChildren.add(Text(lines.last, style: themeData.textTheme.caption)); final List<Widget> rowChildren = <Widget>[ diff --git a/examples/flutter_gallery/lib/demo/cupertino/cupertino_refresh_demo.dart b/examples/flutter_gallery/lib/demo/cupertino/cupertino_refresh_demo.dart index cd4aecf1f14067db344116dbd71e7a1d9f68789f..84f8dc7bf741c8623a9dd3c668956a979ab6b649 100644 --- a/examples/flutter_gallery/lib/demo/cupertino/cupertino_refresh_demo.dart +++ b/examples/flutter_gallery/lib/demo/cupertino/cupertino_refresh_demo.dart @@ -58,7 +58,7 @@ class _CupertinoRefreshControlDemoState extends State<CupertinoRefreshControlDem CupertinoSliverRefreshControl( onRefresh: () { return Future<void>.delayed(const Duration(seconds: 2)) - ..then((_) { + ..then<void>((_) { if (mounted) { setState(() => repopulateList()); } diff --git a/examples/flutter_gallery/lib/demo/material/bottom_app_bar_demo.dart b/examples/flutter_gallery/lib/demo/material/bottom_app_bar_demo.dart index 9b1d14dd801c35cdb2c71425e064f360bec6a15c..bf327f041bf7b27bf9c1d15f0b9832982320d127 100644 --- a/examples/flutter_gallery/lib/demo/material/bottom_app_bar_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/bottom_app_bar_demo.dart @@ -281,7 +281,7 @@ class _ColorsItem extends StatelessWidget { Widget build(BuildContext context) { return Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: colors.map((_NamedColor namedColor) { + children: colors.map<Widget>((_NamedColor namedColor) { return RawMaterialButton( onPressed: () { onChanged(namedColor.color); diff --git a/examples/flutter_gallery/lib/demo/material/bottom_navigation_demo.dart b/examples/flutter_gallery/lib/demo/material/bottom_navigation_demo.dart index 479c81a85bf7fcde23b9abbd0649374a25ee4e31..3046c74b08d9d8bb2b0e0e80e0d79c23d13f9e7b 100644 --- a/examples/flutter_gallery/lib/demo/material/bottom_navigation_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/bottom_navigation_demo.dart @@ -194,7 +194,7 @@ class _BottomNavigationDemoState extends State<BottomNavigationDemo> Widget build(BuildContext context) { final BottomNavigationBar botNavBar = BottomNavigationBar( items: _navigationViews - .map((NavigationIconView navigationView) => navigationView.item) + .map<BottomNavigationBarItem>((NavigationIconView navigationView) => navigationView.item) .toList(), currentIndex: _currentIndex, type: _type, diff --git a/examples/flutter_gallery/lib/demo/material/buttons_demo.dart b/examples/flutter_gallery/lib/demo/material/buttons_demo.dart index a590f1f5246f69f2d90cca92eef985361c71c434..9de0655709ace465efc9895ced5b0190e3f5410e 100644 --- a/examples/flutter_gallery/lib/demo/material/buttons_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/buttons_demo.dart @@ -280,7 +280,7 @@ class _ButtonsDemoState extends State<ButtonsDemo> { dropdown1Value = newValue; }); }, - items: <String>['One', 'Two', 'Free', 'Four'].map((String value) { + items: <String>['One', 'Two', 'Free', 'Four'].map<DropdownMenuItem<String>>((String value) { return DropdownMenuItem<String>( value: value, child: Text(value), @@ -301,7 +301,7 @@ class _ButtonsDemoState extends State<ButtonsDemo> { dropdown2Value = newValue; }); }, - items: <String>['One', 'Two', 'Free', 'Four'].map((String value) { + items: <String>['One', 'Two', 'Free', 'Four'].map<DropdownMenuItem<String>>((String value) { return DropdownMenuItem<String>( value: value, child: Text(value), @@ -325,7 +325,7 @@ class _ButtonsDemoState extends State<ButtonsDemo> { 'One', 'Two', 'Free', 'Four', 'Can', 'I', 'Have', 'A', 'Little', 'Bit', 'More', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten' ] - .map((String value) { + .map<DropdownMenuItem<String>>((String value) { return DropdownMenuItem<String>( value: value, child: Text(value), @@ -365,7 +365,7 @@ class _ButtonsDemoState extends State<ButtonsDemo> { onPressed: null, ) ] - .map((Widget button) => SizedBox(width: 64.0, height: 64.0, child: button)) + .map<Widget>((Widget button) => SizedBox(width: 64.0, height: 64.0, child: button)) .toList(), ), ); diff --git a/examples/flutter_gallery/lib/demo/material/cards_demo.dart b/examples/flutter_gallery/lib/demo/material/cards_demo.dart index e318eb79de65435da6c585ff0e8ce234c56d6e75..2a09e8cabdae3182ad32bed9fa3db51f457bd3bf 100644 --- a/examples/flutter_gallery/lib/demo/material/cards_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/cards_demo.dart @@ -191,7 +191,7 @@ class _CardsDemoState extends State<CardsDemo> { body: ListView( itemExtent: TravelDestinationItem.height, padding: const EdgeInsets.only(top: 8.0, left: 8.0, right: 8.0), - children: destinations.map((TravelDestination destination) { + children: destinations.map<Widget>((TravelDestination destination) { return Container( margin: const EdgeInsets.only(bottom: 8.0), child: TravelDestinationItem( diff --git a/examples/flutter_gallery/lib/demo/material/chip_demo.dart b/examples/flutter_gallery/lib/demo/material/chip_demo.dart index 48be2b1ea681393d094724d1a5c36db9f6e9f641..3590c0295c936c18123a61c4f7b640be4fbd7e84 100644 --- a/examples/flutter_gallery/lib/demo/material/chip_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/chip_demo.dart @@ -92,7 +92,7 @@ class _ChipsTile extends StatelessWidget { ]; if (children.isNotEmpty) { cardChildren.add(Wrap( - children: children.map((Widget chip) { + children: children.map<Widget>((Widget chip) { return Padding( padding: const EdgeInsets.all(2.0), child: chip, diff --git a/examples/flutter_gallery/lib/demo/material/date_and_time_picker_demo.dart b/examples/flutter_gallery/lib/demo/material/date_and_time_picker_demo.dart index 76ccf441e25f3cc30070f82a025bc9a56cfed34b..64701fe2169e3f8083553d057e2b728e2d0236a2 100644 --- a/examples/flutter_gallery/lib/demo/material/date_and_time_picker_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/date_and_time_picker_demo.dart @@ -201,7 +201,7 @@ class _DateAndTimePickerDemoState extends State<DateAndTimePickerDemo> { _activity = newValue; }); }, - items: _allActivities.map((String value) { + items: _allActivities.map<DropdownMenuItem<String>>((String value) { return DropdownMenuItem<String>( value: value, child: Text(value), diff --git a/examples/flutter_gallery/lib/demo/material/dialog_demo.dart b/examples/flutter_gallery/lib/demo/material/dialog_demo.dart index dc48a7e9a1fc5e5e5a4a3f6a6bb7d30b28169c9d..27c7bffc87539ce224d0cc2d9ac51c659ec70dcb 100644 --- a/examples/flutter_gallery/lib/demo/material/dialog_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/dialog_demo.dart @@ -201,7 +201,7 @@ class DialogDemoState extends State<DialogDemo> { ), ] // Add a little space between the buttons - .map((Widget button) { + .map<Widget>((Widget button) { return Container( padding: const EdgeInsets.symmetric(vertical: 8.0), child: button diff --git a/examples/flutter_gallery/lib/demo/material/drawer_demo.dart b/examples/flutter_gallery/lib/demo/material/drawer_demo.dart index 5590fd58fddae27727f9e821d11d68d341add096..3f08bdea837ba207d61177de9321ee2dddd8de6e 100644 --- a/examples/flutter_gallery/lib/demo/material/drawer_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/drawer_demo.dart @@ -159,7 +159,7 @@ class _DrawerDemoState extends State<DrawerDemo> with TickerProviderStateMixin { child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.stretch, - children: _drawerContents.map((String id) { + children: _drawerContents.map<Widget>((String id) { return ListTile( leading: CircleAvatar(child: Text(id)), title: Text('Drawer item $id'), diff --git a/examples/flutter_gallery/lib/demo/material/elevation_demo.dart b/examples/flutter_gallery/lib/demo/material/elevation_demo.dart index 651854fc2ae203f1b5e4ae9cf55df4123e34b488..c2500a4ddd0b87048265a05b71ac7d9c09130d67 100644 --- a/examples/flutter_gallery/lib/demo/material/elevation_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/elevation_demo.dart @@ -25,7 +25,7 @@ class _ElevationDemoState extends State<ElevationDemo> { 24.0, ]; - return elevations.map((double elevation) { + return elevations.map<Widget>((double elevation) { return Center( child: Card( margin: const EdgeInsets.all(20.0), diff --git a/examples/flutter_gallery/lib/demo/material/expansion_panels_demo.dart b/examples/flutter_gallery/lib/demo/material/expansion_panels_demo.dart index 861d578b51fe02f12c6a25e13107f8870a1c12f5..c3f2b86d078d6364ceedbd00340df26655b55b21 100644 --- a/examples/flutter_gallery/lib/demo/material/expansion_panels_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/expansion_panels_demo.dart @@ -356,7 +356,7 @@ class _ExpansionPanelsDemoState extends State<ExpansionPanelsDemo> { _demoItems[index].isExpanded = !isExpanded; }); }, - children: _demoItems.map((DemoItem<dynamic> item) { + children: _demoItems.map<ExpansionPanel>((DemoItem<dynamic> item) { return ExpansionPanel( isExpanded: item.isExpanded, headerBuilder: item.headerBuilder, diff --git a/examples/flutter_gallery/lib/demo/material/full_screen_dialog_demo.dart b/examples/flutter_gallery/lib/demo/material/full_screen_dialog_demo.dart index 99db465b16728a50cf851092d53b0360da54a267..9d268feae040820fa311e9a927fb760febea98b0 100644 --- a/examples/flutter_gallery/lib/demo/material/full_screen_dialog_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/full_screen_dialog_demo.dart @@ -251,7 +251,7 @@ class FullScreenDialogDemoState extends State<FullScreenDialogDemo> { ) ) ] - .map((Widget child) { + .map<Widget>((Widget child) { return Container( padding: const EdgeInsets.symmetric(vertical: 8.0), height: 96.0, diff --git a/examples/flutter_gallery/lib/demo/material/grid_list_demo.dart b/examples/flutter_gallery/lib/demo/material/grid_list_demo.dart index e6f2c6096848aeac936ea81efe6b369d65377242..eaa72b39181ebfa4bfc03b062e5e56df13da39d3 100644 --- a/examples/flutter_gallery/lib/demo/material/grid_list_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/grid_list_demo.dart @@ -374,7 +374,7 @@ class GridListDemoState extends State<GridListDemo> { crossAxisSpacing: 4.0, padding: const EdgeInsets.all(4.0), childAspectRatio: (orientation == Orientation.portrait) ? 1.0 : 1.3, - children: photos.map((Photo photo) { + children: photos.map<Widget>((Photo photo) { return GridDemoPhotoItem( photo: photo, tileStyle: _tileStyle, diff --git a/examples/flutter_gallery/lib/demo/material/leave_behind_demo.dart b/examples/flutter_gallery/lib/demo/material/leave_behind_demo.dart index 3cce01a3c3b8f73af24871abd3311c0ad7030137..c723baf92066f49c82ddcea5a0cbddf376239686 100644 --- a/examples/flutter_gallery/lib/demo/material/leave_behind_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/leave_behind_demo.dart @@ -126,7 +126,7 @@ class LeaveBehindDemoState extends State<LeaveBehindDemo> { ); } else { body = ListView( - children: leaveBehindItems.map((LeaveBehindItem item) { + children: leaveBehindItems.map<Widget>((LeaveBehindItem item) { return _LeaveBehindListItem( item: item, onArchive: _handleArchive, diff --git a/examples/flutter_gallery/lib/demo/material/list_demo.dart b/examples/flutter_gallery/lib/demo/material/list_demo.dart index a3fdb96c76e63b56b955efeb89b9625c21f57119..0f35f96fdf8285fec246615136c0fcb8138684cc 100644 --- a/examples/flutter_gallery/lib/demo/material/list_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/list_demo.dart @@ -209,7 +209,7 @@ class _ListDemoState extends State<ListDemo> { break; } - Iterable<Widget> listTiles = items.map((String item) => buildListTile(context, item)); + Iterable<Widget> listTiles = items.map<Widget>((String item) => buildListTile(context, item)); if (_showDividers) listTiles = ListTile.divideTiles(context: context, tiles: listTiles); diff --git a/examples/flutter_gallery/lib/demo/material/overscroll_demo.dart b/examples/flutter_gallery/lib/demo/material/overscroll_demo.dart index 6720de9f90e6d48647c9fc72f1185f160ffac93d..58634444ca9adef71444695ebe3cc3e83a506146 100644 --- a/examples/flutter_gallery/lib/demo/material/overscroll_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/overscroll_demo.dart @@ -29,7 +29,7 @@ class OverscrollDemoState extends State<OverscrollDemo> { Future<Null> _handleRefresh() { final Completer<Null> completer = Completer<Null>(); Timer(const Duration(seconds: 3), () { completer.complete(null); }); - return completer.future.then((_) { + return completer.future.then<Null>((_) { _scaffoldKey.currentState?.showSnackBar(SnackBar( content: const Text('Refresh complete'), action: SnackBarAction( diff --git a/examples/flutter_gallery/lib/demo/material/page_selector_demo.dart b/examples/flutter_gallery/lib/demo/material/page_selector_demo.dart index 3c9a47ceb395c06ba6f1d93066a09ac64f805db6..4a7dfe570e8dd7a6d3c68324cdcc99361554c2b3 100644 --- a/examples/flutter_gallery/lib/demo/material/page_selector_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/page_selector_demo.dart @@ -54,7 +54,7 @@ class _PageSelector extends StatelessWidget { color: color, ), child: TabBarView( - children: icons.map((Icon icon) { + children: icons.map<Widget>((Icon icon) { return Container( padding: const EdgeInsets.all(12.0), child: Card( diff --git a/examples/flutter_gallery/lib/demo/material/progress_indicator_demo.dart b/examples/flutter_gallery/lib/demo/material/progress_indicator_demo.dart index cdd086f510f2a6779a6703ad1ac784dac10f6bbf..edfa5496e4ad4628ca867c3ac8b00a3c6e4281a9 100644 --- a/examples/flutter_gallery/lib/demo/material/progress_indicator_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/progress_indicator_demo.dart @@ -94,7 +94,7 @@ class _ProgressIndicatorDemoState extends State<ProgressIndicatorDemo> with Sing ]; return Column( children: indicators - .map((Widget c) => Container(child: c, margin: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0))) + .map<Widget>((Widget c) => Container(child: c, margin: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0))) .toList(), ); } diff --git a/examples/flutter_gallery/lib/demo/material/reorderable_list_demo.dart b/examples/flutter_gallery/lib/demo/material/reorderable_list_demo.dart index af386a7dd91a83ce4326b08e4987ce5287594355..4cda720dfcbacfa6e741093b7dfb856106f061f4 100644 --- a/examples/flutter_gallery/lib/demo/material/reorderable_list_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/reorderable_list_demo.dart @@ -44,7 +44,7 @@ class _ListDemoState extends State<ReorderableListDemo> { bool _reverseSort = false; final List<_ListItem> _items = <String>[ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', - ].map((String item) => _ListItem(item, false)).toList(); + ].map<_ListItem>((String item) => _ListItem(item, false)).toList(); void changeItemType(_ReorderableListType type) { setState(() { @@ -191,7 +191,7 @@ class _ListDemoState extends State<ReorderableListDemo> { onReorder: _onReorder, scrollDirection: _itemType == _ReorderableListType.horizontalAvatar ? Axis.horizontal : Axis.vertical, padding: const EdgeInsets.symmetric(vertical: 8.0), - children: _items.map(buildListTile).toList(), + children: _items.map<Widget>(buildListTile).toList(), ), ), ); diff --git a/examples/flutter_gallery/lib/demo/material/scrollable_tabs_demo.dart b/examples/flutter_gallery/lib/demo/material/scrollable_tabs_demo.dart index 2d2364888f236ccfa3cb3f4d4bb9863d22882d0f..0135c30e3574204b15d94c2426907a25d907030f 100644 --- a/examples/flutter_gallery/lib/demo/material/scrollable_tabs_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/scrollable_tabs_demo.dart @@ -174,7 +174,7 @@ class ScrollableTabsDemoState extends State<ScrollableTabsDemo> with SingleTicke ), body: TabBarView( controller: _controller, - children: _allPages.map((_Page page) { + children: _allPages.map<Widget>((_Page page) { return SafeArea( top: false, bottom: false, diff --git a/examples/flutter_gallery/lib/demo/material/search_demo.dart b/examples/flutter_gallery/lib/demo/material/search_demo.dart index afc618616cfec4e3762adb4b8aefa7dbda9f9718..e1be3ea94ebb7ada51b25c25160ce59623df6794 100644 --- a/examples/flutter_gallery/lib/demo/material/search_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/search_demo.dart @@ -160,7 +160,7 @@ class _SearchDemoSearchDelegate extends SearchDelegate<int> { return _SuggestionList( query: query, - suggestions: suggestions.map((int i) => '$i').toList(), + suggestions: suggestions.map<String>((int i) => '$i').toList(), onSelected: (String suggestion) { query = suggestion; showResults(context); diff --git a/examples/flutter_gallery/lib/demo/material/snack_bar_demo.dart b/examples/flutter_gallery/lib/demo/material/snack_bar_demo.dart index 830ceba09b87541d8734564de9aa2453bdcc8783..6f135bf09665c2803ea9c6ec1873cc4d94583b3e 100644 --- a/examples/flutter_gallery/lib/demo/material/snack_bar_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/snack_bar_demo.dart @@ -60,7 +60,7 @@ class _SnackBarDemoState extends State<SnackBarDemo> { ), const Text(_text3), ] - .map((Widget child) { + .map<Widget>((Widget child) { return Container( margin: const EdgeInsets.symmetric(vertical: 12.0), child: child diff --git a/examples/flutter_gallery/lib/demo/material/tabs_demo.dart b/examples/flutter_gallery/lib/demo/material/tabs_demo.dart index 5cdfdcbb3a0ed94ffda4a0d3bcc7f16486e4be58..a9064b1513153ccef7904af9dba92d431199ba63 100644 --- a/examples/flutter_gallery/lib/demo/material/tabs_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/tabs_demo.dart @@ -157,7 +157,7 @@ class TabsDemo extends StatelessWidget { expandedHeight: 150.0, forceElevated: innerBoxIsScrolled, bottom: TabBar( - tabs: _allPages.keys.map( + tabs: _allPages.keys.map<Widget>( (_Page page) => Tab(text: page.label), ).toList(), ), @@ -166,7 +166,7 @@ class TabsDemo extends StatelessWidget { ]; }, body: TabBarView( - children: _allPages.keys.map((_Page page) { + children: _allPages.keys.map<Widget>((_Page page) { return SafeArea( top: false, bottom: false, diff --git a/examples/flutter_gallery/lib/demo/material/tabs_fab_demo.dart b/examples/flutter_gallery/lib/demo/material/tabs_fab_demo.dart index 2a7371a93485c37710d1160e9f1e342130dbe42b..0ebb592ef7800df2ffb6e0df9ae4aa69d815f2f7 100644 --- a/examples/flutter_gallery/lib/demo/material/tabs_fab_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/tabs_fab_demo.dart @@ -136,7 +136,7 @@ class _TabsFabDemoState extends State<TabsFabDemo> with SingleTickerProviderStat title: const Text('FAB per tab'), bottom: TabBar( controller: _controller, - tabs: _allPages.map((_Page page) => Tab(text: page.label.toUpperCase())).toList(), + tabs: _allPages.map<Widget>((_Page page) => Tab(text: page.label.toUpperCase())).toList(), ), actions: <Widget>[ MaterialDemoDocumentationButton(TabsFabDemo.routeName), @@ -153,7 +153,7 @@ class _TabsFabDemoState extends State<TabsFabDemo> with SingleTickerProviderStat floatingActionButton: buildFloatingActionButton(_selectedPage), body: TabBarView( controller: _controller, - children: _allPages.map(buildTabView).toList() + children: _allPages.map<Widget>(buildTabView).toList() ), ); } diff --git a/examples/flutter_gallery/lib/demo/material/tooltip_demo.dart b/examples/flutter_gallery/lib/demo/material/tooltip_demo.dart index 69639085d9e8608d88e75ce3067475cc237a0ca9..20707a3801daaa4251949925678b50507d14a670 100644 --- a/examples/flutter_gallery/lib/demo/material/tooltip_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/tooltip_demo.dart @@ -59,7 +59,7 @@ class TooltipDemo extends StatelessWidget { ) ) ] - .map((Widget widget) { + .map<Widget>((Widget widget) { return Padding( padding: const EdgeInsets.only(top: 16.0, left: 16.0, right: 16.0), child: widget diff --git a/examples/flutter_gallery/lib/demo/pesto_demo.dart b/examples/flutter_gallery/lib/demo/pesto_demo.dart index 29ed01f2fd73230d3cb6c6adb06f6f78ece487b9..8683c339752d4a2154aecf242af8228fc988809f 100644 --- a/examples/flutter_gallery/lib/demo/pesto_demo.dart +++ b/examples/flutter_gallery/lib/demo/pesto_demo.dart @@ -492,7 +492,7 @@ class RecipeSheet extends StatelessWidget { ), ] ), - ]..addAll(recipe.ingredients.map( + ]..addAll(recipe.ingredients.map<TableRow>( (RecipeIngredient ingredient) { return _buildItemRow(ingredient.amount, ingredient.description); } @@ -506,7 +506,7 @@ class RecipeSheet extends StatelessWidget { ), ] ) - )..addAll(recipe.steps.map( + )..addAll(recipe.steps.map<TableRow>( (RecipeStep step) { return _buildItemRow(step.duration ?? '', step.description); } diff --git a/examples/flutter_gallery/lib/demo/shrine/shrine_home.dart b/examples/flutter_gallery/lib/demo/shrine/shrine_home.dart index 6e30227b4a0217cab941e69ca5d81d1d8e40ae32..9382df9f0fe82a8a501146a2e26ee657c128df35 100644 --- a/examples/flutter_gallery/lib/demo/shrine/shrine_home.dart +++ b/examples/flutter_gallery/lib/demo/shrine/shrine_home.dart @@ -395,7 +395,7 @@ class _ShrineHomeState extends State<ShrineHome> { sliver: SliverGrid( gridDelegate: gridDelegate, delegate: SliverChildListDelegate( - _products.map((Product product) { + _products.map<Widget>((Product product) { return _ProductItem( product: product, onPressed: () { _showOrderPage(product); }, diff --git a/examples/flutter_gallery/lib/demo/shrine/shrine_order.dart b/examples/flutter_gallery/lib/demo/shrine/shrine_order.dart index 453b16e9b56bc42111c99237c4958dee568cbffb..45f0bb5362ffe22c4f6c7f5d04af5de2a3a79495 100644 --- a/examples/flutter_gallery/lib/demo/shrine/shrine_order.dart +++ b/examples/flutter_gallery/lib/demo/shrine/shrine_order.dart @@ -46,7 +46,7 @@ class _ProductItem extends StatelessWidget { ), ), child: DropdownButton<int>( - items: <int>[0, 1, 2, 3, 4, 5].map((int value) { + items: <int>[0, 1, 2, 3, 4, 5].map<DropdownMenuItem<int>>((int value) { return DropdownMenuItem<int>( value: value, child: Padding( diff --git a/examples/flutter_gallery/lib/demo/video_demo.dart b/examples/flutter_gallery/lib/demo/video_demo.dart index ef4b9ff28bf23f781e239f917ffe47e4ded3b386..59bbc1cece090cd40ea1faf5f9afba678fd2fb37 100644 --- a/examples/flutter_gallery/lib/demo/video_demo.dart +++ b/examples/flutter_gallery/lib/demo/video_demo.dart @@ -381,7 +381,7 @@ class _VideoDemoState extends State<VideoDemo> initController(butterflyController); initController(beeController); - isIOSSimulator().then((bool result) { + isIOSSimulator().then<void>((bool result) { isSupported = !result; }); } diff --git a/examples/flutter_gallery/lib/gallery/demo.dart b/examples/flutter_gallery/lib/gallery/demo.dart index d6e11683c523af68fcfecba5a2de7ac88c557b53..9b428b7595dd467544793d5aaea48a3352ebdd21 100644 --- a/examples/flutter_gallery/lib/gallery/demo.dart +++ b/examples/flutter_gallery/lib/gallery/demo.dart @@ -96,11 +96,11 @@ class TabbedComponentDemoScaffold extends StatelessWidget { ), bottom: TabBar( isScrollable: true, - tabs: demos.map((ComponentDemoTabData data) => Tab(text: data.tabName)).toList(), + tabs: demos.map<Widget>((ComponentDemoTabData data) => Tab(text: data.tabName)).toList(), ), ), body: TabBarView( - children: demos.map((ComponentDemoTabData demo) { + children: demos.map<Widget>((ComponentDemoTabData demo) { return SafeArea( top: false, bottom: false, diff --git a/examples/flutter_gallery/lib/gallery/example_code.dart b/examples/flutter_gallery/lib/gallery/example_code.dart index 595b149f9acfdda83c43e4d26602045377d84409..96969393dbe03c112e5a83dfc6f6f21939f1c646 100644 --- a/examples/flutter_gallery/lib/gallery/example_code.dart +++ b/examples/flutter_gallery/lib/gallery/example_code.dart @@ -104,7 +104,7 @@ DropdownButton<String>( }); }, items: <String>['One', 'Two', 'Free', 'Four'] - .map((String value) { + .map<DropdownMenuItem<String>>((String value) { return DropdownMenuItem<String>( value: value, child: Text(value)); @@ -263,7 +263,7 @@ GridView.count( 'https://example.com/image-2.jpg', '...', 'https://example.com/image-n.jpg' - ].map((String url) { + ].map<Widget>((String url) { return GridTile( footer: GridTileBar( title: Text(url) diff --git a/examples/flutter_gallery/lib/gallery/options.dart b/examples/flutter_gallery/lib/gallery/options.dart index 29e09f2c4ec4a6ddc21c8a9ba0143b0fb77aa7cd..d40b31a0d6e0ffa7ed54f01f3b272004471ef47f 100644 --- a/examples/flutter_gallery/lib/gallery/options.dart +++ b/examples/flutter_gallery/lib/gallery/options.dart @@ -252,7 +252,7 @@ class _TextScaleFactorItem extends StatelessWidget { padding: const EdgeInsetsDirectional.only(end: 16.0), icon: const Icon(Icons.arrow_drop_down), itemBuilder: (BuildContext context) { - return kAllGalleryTextScaleValues.map((GalleryTextScaleValue scaleValue) { + return kAllGalleryTextScaleValues.map<PopupMenuItem<GalleryTextScaleValue>>((GalleryTextScaleValue scaleValue) { return PopupMenuItem<GalleryTextScaleValue>( value: scaleValue, child: Text(scaleValue.label), diff --git a/examples/layers/services/isolate.dart b/examples/layers/services/isolate.dart index 6feeda9256adeca31a782cb329b5866ddb576fff..d7bfae7a60fbbe0b88853ebed4b008f2cebd2960 100644 --- a/examples/layers/services/isolate.dart +++ b/examples/layers/services/isolate.dart @@ -141,7 +141,7 @@ class CalculationManager { final CalculationMessage message = CalculationMessage(data, _receivePort.sendPort); // Spawn an isolate to JSON-parse the file contents. The JSON parsing // is synchronous, so if done in the main isolate, the UI would block. - Isolate.spawn(_calculate, message).then<Null>((Isolate isolate) { + Isolate.spawn<CalculationMessage>(_calculate, message).then<Null>((Isolate isolate) { if (!isRunning) { isolate.kill(priority: Isolate.immediate); } else { diff --git a/examples/layers/widgets/media_query.dart b/examples/layers/widgets/media_query.dart index 69ed7f349701b31e657a01574a3ccdbc8e4b7dd3..091fadb9c1c2a23ed549812f950837d4ea146ea9 100644 --- a/examples/layers/widgets/media_query.dart +++ b/examples/layers/widgets/media_query.dart @@ -74,12 +74,12 @@ class AdaptiveContainer extends StatelessWidget { if (MediaQuery.of(context).size.width < _kGridViewBreakpoint) { return ListView( itemExtent: _kListItemExtent, - children: names.map((String name) => AdaptedListItem(name: name)).toList(), + children: names.map<Widget>((String name) => AdaptedListItem(name: name)).toList(), ); } else { return GridView.extent( maxCrossAxisExtent: _kMaxTileWidth, - children: names.map((String name) => AdaptedGridItem(name: name)).toList(), + children: names.map<Widget>((String name) => AdaptedGridItem(name: name)).toList(), ); } } diff --git a/examples/layers/widgets/sectors.dart b/examples/layers/widgets/sectors.dart index b8fae26c00806a96f0b9d70c5721cce117c4b2b4..553e8af668e73884c925e79a3858fa44694631f0 100644 --- a/examples/layers/widgets/sectors.dart +++ b/examples/layers/widgets/sectors.dart @@ -28,7 +28,7 @@ class SectorAppState extends State<SectorApp> { List<double> wantedSectorSizes = <double>[]; List<double> actualSectorSizes = <double>[]; - double get currentTheta => wantedSectorSizes.fold(0.0, (double total, double value) => total + value); + double get currentTheta => wantedSectorSizes.fold<double>(0.0, (double total, double value) => total + value); void addSector() { final double currentTheta = this.currentTheta; diff --git a/examples/layers/widgets/styled_text.dart b/examples/layers/widgets/styled_text.dart index b3dae6ca8f00a2c1f994abf49a9c44ba31fac084..633d55e722089b951a1919b9637d30efccffa12f 100644 --- a/examples/layers/widgets/styled_text.dart +++ b/examples/layers/widgets/styled_text.dart @@ -20,7 +20,7 @@ HAL: This mission is too important for me to allow you to jeopardize it.'''; // [["Dave", "Open the pod bay..."] ...] final List<List<String>> _kNameLines = _kDialogText .split('\n') - .map((String line) => line.split(':')) + .map<List<String>>((String line) => line.split(':')) .toList(); final TextStyle _kDaveStyle = TextStyle(color: Colors.indigo.shade400, height: 1.8); diff --git a/examples/stocks/lib/stock_strings.dart b/examples/stocks/lib/stock_strings.dart index 136d07926326f5aecfbb9da9916018166b271c18..ed1422476eeadc7d35195568dd02653ea4fcef70 100644 --- a/examples/stocks/lib/stock_strings.dart +++ b/examples/stocks/lib/stock_strings.dart @@ -19,7 +19,7 @@ class StockStrings { static Future<StockStrings> load(Locale locale) { return initializeMessages(locale.toString()) - .then((Object _) { + .then<StockStrings>((Object _) { return StockStrings(locale); }); } diff --git a/packages/flutter/lib/src/cupertino/button.dart b/packages/flutter/lib/src/cupertino/button.dart index 046cc113d46155a769d81e60cd8eab9d4fb90917..323d2c6cda162c6a4d87959bf9eaa44039e10cf2 100644 --- a/packages/flutter/lib/src/cupertino/button.dart +++ b/packages/flutter/lib/src/cupertino/button.dart @@ -191,7 +191,7 @@ class _CupertinoButtonState extends State<CupertinoButton> with SingleTickerProv final Future<Null> ticker = _buttonHeldDown ? _animationController.animateTo(1.0, duration: kFadeOutDuration) : _animationController.animateTo(0.0, duration: kFadeInDuration); - ticker.then((Null value) { + ticker.then<void>((Null value) { if (mounted && wasHeldDown != _buttonHeldDown) _animate(); }); diff --git a/packages/flutter/lib/src/cupertino/dialog.dart b/packages/flutter/lib/src/cupertino/dialog.dart index 092beb0a14537632c26a76023c7b6841636bd001..4f5c7ce6d6362163d38aeff3f16ce6cf41600f3a 100644 --- a/packages/flutter/lib/src/cupertino/dialog.dart +++ b/packages/flutter/lib/src/cupertino/dialog.dart @@ -1564,7 +1564,7 @@ class _RenderCupertinoDialogActions extends RenderBox ) : Rect.zero; - final List<Rect> pressedButtonRects = _pressedButtons.map((RenderBox pressedButton) { + final List<Rect> pressedButtonRects = _pressedButtons.map<Rect>((RenderBox pressedButton) { final MultiChildLayoutParentData buttonParentData = pressedButton.parentData; return Rect.fromLTWH( diff --git a/packages/flutter/lib/src/foundation/isolates.dart b/packages/flutter/lib/src/foundation/isolates.dart index 603e05239eba308ebb13d81785188561af7ae7d8..7eaf6181b01e97b08acf0afb0b88fd395f2c8dee 100644 --- a/packages/flutter/lib/src/foundation/isolates.dart +++ b/packages/flutter/lib/src/foundation/isolates.dart @@ -50,7 +50,7 @@ Future<R> compute<Q, R>(ComputeCallback<Q, R> callback, Q message, { String debu Timeline.startSync('$debugLabel: start', flow: flow); final ReceivePort resultPort = ReceivePort(); Timeline.finishSync(); - final Isolate isolate = await Isolate.spawn( + final Isolate isolate = await Isolate.spawn<_IsolateConfiguration<Q, R>>( _spawn, _IsolateConfiguration<Q, R>( callback, diff --git a/packages/flutter/lib/src/foundation/print.dart b/packages/flutter/lib/src/foundation/print.dart index 2e8acd114f77d83006b2febc3d78e3a506eb5dd8..434dbb2436c50a9946c0c4d5b84fd5a6e9a8f5cb 100644 --- a/packages/flutter/lib/src/foundation/print.dart +++ b/packages/flutter/lib/src/foundation/print.dart @@ -32,7 +32,7 @@ DebugPrintCallback debugPrint = debugPrintThrottled; /// Used by tests. void debugPrintSynchronously(String message, { int wrapWidth }) { if (wrapWidth != null) { - print(message.split('\n').expand((String line) => debugWordWrap(line, wrapWidth)).join('\n')); + print(message.split('\n').expand<String>((String line) => debugWordWrap(line, wrapWidth)).join('\n')); } else { print(message); } @@ -42,7 +42,7 @@ void debugPrintSynchronously(String message, { int wrapWidth }) { /// messages on platforms that rate-limit their logging (for example, Android). void debugPrintThrottled(String message, { int wrapWidth }) { if (wrapWidth != null) { - _debugPrintBuffer.addAll(message.split('\n').expand((String line) => debugWordWrap(line, wrapWidth))); + _debugPrintBuffer.addAll(message.split('\n').expand<String>((String line) => debugWordWrap(line, wrapWidth))); } else { _debugPrintBuffer.addAll(message.split('\n')); } diff --git a/packages/flutter/lib/src/material/animated_icons/animated_icons.dart b/packages/flutter/lib/src/material/animated_icons/animated_icons.dart index 1077544c32fc31cc2519a3ad61b519a4cc70be34..6284d47248ffc85d55ca4bba7e8f62848d9ce8a0 100644 --- a/packages/flutter/lib/src/material/animated_icons/animated_icons.dart +++ b/packages/flutter/lib/src/material/animated_icons/animated_icons.dart @@ -195,7 +195,7 @@ class _PathFrames { final List<double> opacities; void paint(ui.Canvas canvas, Color color, _UiPathFactory uiPathFactory, double progress) { - final double opacity = _interpolate(opacities, progress, lerpDouble); + final double opacity = _interpolate<double>(opacities, progress, lerpDouble); final ui.Paint paint = ui.Paint() ..style = PaintingStyle.fill ..color = color.withOpacity(color.opacity * opacity); @@ -227,7 +227,7 @@ class _PathMoveTo extends _PathCommand { @override void apply(Path path, double progress) { - final Offset offset = _interpolate(points, progress, Offset.lerp); + final Offset offset = _interpolate<Offset>(points, progress, Offset.lerp); path.moveTo(offset.dx, offset.dy); } } @@ -241,9 +241,9 @@ class _PathCubicTo extends _PathCommand { @override void apply(Path path, double progress) { - final Offset controlPoint1 = _interpolate(controlPoints1, progress, Offset.lerp); - final Offset controlPoint2 = _interpolate(controlPoints2, progress, Offset.lerp); - final Offset targetPoint = _interpolate(targetPoints, progress, Offset.lerp); + final Offset controlPoint1 = _interpolate<Offset>(controlPoints1, progress, Offset.lerp); + final Offset controlPoint2 = _interpolate<Offset>(controlPoints2, progress, Offset.lerp); + final Offset targetPoint = _interpolate<Offset>(targetPoints, progress, Offset.lerp); path.cubicTo( controlPoint1.dx, controlPoint1.dy, controlPoint2.dx, controlPoint2.dy, @@ -260,7 +260,7 @@ class _PathLineTo extends _PathCommand { @override void apply(Path path, double progress) { - final Offset point = _interpolate(points, progress, Offset.lerp); + final Offset point = _interpolate<Offset>(points, progress, Offset.lerp); path.lineTo(point.dx, point.dy); } } diff --git a/packages/flutter/lib/src/material/bottom_navigation_bar.dart b/packages/flutter/lib/src/material/bottom_navigation_bar.dart index 1116501fe6c6025cf2bfb245c39aa9a751544a6a..9024b5328f3c1027d447913c88a1929109af626f 100644 --- a/packages/flutter/lib/src/material/bottom_navigation_bar.dart +++ b/packages/flutter/lib/src/material/bottom_navigation_bar.dart @@ -582,7 +582,7 @@ class _Circle { double weightSum(Iterable<Animation<double>> animations) { // We're adding flex values instead of animation values to produce correct // ratios. - return animations.map(state._evaluateFlex).fold(0.0, (double sum, double value) => sum + value); + return animations.map<double>(state._evaluateFlex).fold<double>(0.0, (double sum, double value) => sum + value); } final double allWeights = weightSum(state._animations); diff --git a/packages/flutter/lib/src/material/mergeable_material.dart b/packages/flutter/lib/src/material/mergeable_material.dart index 5e333a2d8f326c00a485f67d5bb860e63315ddd6..757b6d31cccef6293cc7a598a5e3931e8290fc7e 100644 --- a/packages/flutter/lib/src/material/mergeable_material.dart +++ b/packages/flutter/lib/src/material/mergeable_material.dart @@ -278,10 +278,10 @@ class _MergeableMaterialState extends State<MergeableMaterial> with TickerProvid void didUpdateWidget(MergeableMaterial oldWidget) { super.didUpdateWidget(oldWidget); - final Set<LocalKey> oldKeys = oldWidget.children.map( + final Set<LocalKey> oldKeys = oldWidget.children.map<LocalKey>( (MergeableMaterialItem child) => child.key ).toSet(); - final Set<LocalKey> newKeys = widget.children.map( + final Set<LocalKey> newKeys = widget.children.map<LocalKey>( (MergeableMaterialItem child) => child.key ).toSet(); final Set<LocalKey> newOnly = newKeys.difference(oldKeys); diff --git a/packages/flutter/lib/src/material/user_accounts_drawer_header.dart b/packages/flutter/lib/src/material/user_accounts_drawer_header.dart index 7c37659f376733d4c7e8d7981a462ab5040419d6..3ca9773cf9c5ca713d2756bff53e7094ae057bd7 100644 --- a/packages/flutter/lib/src/material/user_accounts_drawer_header.dart +++ b/packages/flutter/lib/src/material/user_accounts_drawer_header.dart @@ -30,7 +30,7 @@ class _AccountPictures extends StatelessWidget { top: 0.0, end: 0.0, child: Row( - children: (otherAccountsPictures ?? <Widget>[]).take(3).map((Widget picture) { + children: (otherAccountsPictures ?? <Widget>[]).take(3).map<Widget>((Widget picture) { return Padding( padding: const EdgeInsetsDirectional.only(start: 8.0), child: Semantics( diff --git a/packages/flutter/lib/src/painting/image_resolution.dart b/packages/flutter/lib/src/painting/image_resolution.dart index 7b9bb82f6351a475d5810b8fd1875ea9b91ea3d2..2061de09462aecb1080c8e0b19c94b7f886fc9a9 100644 --- a/packages/flutter/lib/src/painting/image_resolution.dart +++ b/packages/flutter/lib/src/painting/image_resolution.dart @@ -223,7 +223,7 @@ class AssetImage extends AssetBundleImageProvider { final Iterable<String> keys = parsedJson.keys; final Map<String, List<String>> parsedManifest = Map<String, List<String>>.fromIterables(keys, - keys.map((String key) => List<String>.from(parsedJson[key]))); + keys.map<List<String>>((String key) => List<String>.from(parsedJson[key]))); // TODO(ianh): convert that data structure to the right types. return SynchronousFuture<Map<String, List<String>>>(parsedManifest); } diff --git a/packages/flutter/lib/src/painting/text_span.dart b/packages/flutter/lib/src/painting/text_span.dart index f2a08d5135f99af7c0543339f9434b6c2f41e23c..55a8f1530a0072d9f34ad92538addf3946be1ef7 100644 --- a/packages/flutter/lib/src/painting/text_span.dart +++ b/packages/flutter/lib/src/painting/text_span.dart @@ -355,7 +355,7 @@ class TextSpan extends DiagnosticableTree { List<DiagnosticsNode> debugDescribeChildren() { if (children == null) return const <DiagnosticsNode>[]; - return children.map((TextSpan child) { + return children.map<DiagnosticsNode>((TextSpan child) { if (child != null) { return child.toDiagnosticsNode(); } else { diff --git a/packages/flutter/lib/src/rendering/custom_layout.dart b/packages/flutter/lib/src/rendering/custom_layout.dart index 79f057785e62150e3242fc0b6e4f0118df404fbc..1b44d04408dce5efc2ad3c15dd36fc4150421687 100644 --- a/packages/flutter/lib/src/rendering/custom_layout.dart +++ b/packages/flutter/lib/src/rendering/custom_layout.dart @@ -214,7 +214,7 @@ abstract class MultiChildLayoutDelegate { if (_debugChildrenNeedingLayout.length > 1) { throw FlutterError( 'The $this custom multichild layout delegate forgot to lay out the following children:\n' - ' ${_debugChildrenNeedingLayout.map(_debugDescribeChild).join("\n ")}\n' + ' ${_debugChildrenNeedingLayout.map<String>(_debugDescribeChild).join("\n ")}\n' 'Each child must be laid out exactly once.' ); } else { diff --git a/packages/flutter/lib/src/rendering/layer.dart b/packages/flutter/lib/src/rendering/layer.dart index 2c12b3e989afa708bff38328dcf72743f79b275c..c0188192b626d543d7dcf51cab801929e1de879e 100644 --- a/packages/flutter/lib/src/rendering/layer.dart +++ b/packages/flutter/lib/src/rendering/layer.dart @@ -1140,7 +1140,7 @@ class LeaderLayer extends ContainerLayer { @override S find<S>(Offset regionOffset) { - return super.find(regionOffset - offset); + return super.find<S>(regionOffset - offset); } @override diff --git a/packages/flutter/lib/src/rendering/platform_view.dart b/packages/flutter/lib/src/rendering/platform_view.dart index dc87c7703e1b675a8376b7890f2883d2b8c65536..bf03b1296b2d6b935c1c6a4e09039877c2f6dba8 100644 --- a/packages/flutter/lib/src/rendering/platform_view.dart +++ b/packages/flutter/lib/src/rendering/platform_view.dart @@ -382,8 +382,8 @@ class _MotionEventsDispatcher { eventTime: event.timeStamp.inMilliseconds, action: action, pointerCount: pointerPositions.length, - pointerProperties: pointers.map((int i) => pointerProperties[i]).toList(), - pointerCoords: pointers.map((int i) => pointerPositions[i]).toList(), + pointerProperties: pointers.map<AndroidPointerProperties>((int i) => pointerProperties[i]).toList(), + pointerCoords: pointers.map<AndroidPointerCoords>((int i) => pointerPositions[i]).toList(), metaState: 0, buttonState: 0, xPrecision: 1.0, diff --git a/packages/flutter/lib/src/scheduler/ticker.dart b/packages/flutter/lib/src/scheduler/ticker.dart index a943a916d40c928e9145733f38e83ce3f13fa6cb..cd4d77ba338b2ecbe8dae29d45657104a554901c 100644 --- a/packages/flutter/lib/src/scheduler/ticker.dart +++ b/packages/flutter/lib/src/scheduler/ticker.dart @@ -389,7 +389,7 @@ class TickerFuture implements Future<Null> { callback(); return null; } - orCancel.then(thunk, onError: thunk); + orCancel.then<Null>(thunk, onError: thunk); } /// A future that resolves when this future resolves or throws when the ticker diff --git a/packages/flutter/lib/src/semantics/semantics.dart b/packages/flutter/lib/src/semantics/semantics.dart index 6d956ba098d4bc186e749241d9c6a8afdccfcc42..9837cfbc89dd057a1e80a52dfd35e5c4080efbd3 100644 --- a/packages/flutter/lib/src/semantics/semantics.dart +++ b/packages/flutter/lib/src/semantics/semantics.dart @@ -1844,12 +1844,12 @@ class SemanticsNode extends AbstractNode with DiagnosticableTreeMixin { if (scale != null) { description = '$rect scaled by ${scale.toStringAsFixed(1)}x'; } else if (transform != null && !MatrixUtils.isIdentity(transform)) { - final String matrix = transform.toString().split('\n').take(4).map((String line) => line.substring(4)).join('; '); + final String matrix = transform.toString().split('\n').take(4).map<String>((String line) => line.substring(4)).join('; '); description = '$rect with transform [$matrix]'; } properties.add(DiagnosticsProperty<Rect>('rect', rect, description: description, showName: false)); } - final List<String> actions = _actions.keys.map((SemanticsAction action) => describeEnum(action)).toList()..sort(); + final List<String> actions = _actions.keys.map<String>((SemanticsAction action) => describeEnum(action)).toList()..sort(); final List<String> customSemanticsActions = _customSemanticsActions.keys .map<String>((CustomSemanticsAction action) => action.label) .toList(); @@ -2118,7 +2118,7 @@ class _SemanticsSortGroup extends Comparable<_SemanticsSortGroup> { sortedIds.add(id); } - startNodes.map((SemanticsNode node) => node.id).forEach(search); + startNodes.map<int>((SemanticsNode node) => node.id).forEach(search); return sortedIds.map<SemanticsNode>((int id) => nodeMap[id]).toList().reversed.toList(); } } diff --git a/packages/flutter/lib/src/services/platform_views.dart b/packages/flutter/lib/src/services/platform_views.dart index e015a985026c8d89d7bbb75a9a9f747832cbf374..0efb9c4bc8e9c02a00986895a2b84e99db7ef934 100644 --- a/packages/flutter/lib/src/services/platform_views.dart +++ b/packages/flutter/lib/src/services/platform_views.dart @@ -328,8 +328,8 @@ class AndroidMotionEvent { eventTime, action, pointerCount, - pointerProperties.map((AndroidPointerProperties p) => p._asList()).toList(), - pointerCoords.map((AndroidPointerCoords p) => p._asList()).toList(), + pointerProperties.map<List<int>>((AndroidPointerProperties p) => p._asList()).toList(), + pointerCoords.map<List<double>>((AndroidPointerCoords p) => p._asList()).toList(), metaState, buttonState, xPrecision, diff --git a/packages/flutter/lib/src/services/text_formatter.dart b/packages/flutter/lib/src/services/text_formatter.dart index 1eec81c9be9276ff35927db15e3e1e974f627380..e421143e18ac7ed8ea9cf25052d608dddd7d53d8 100644 --- a/packages/flutter/lib/src/services/text_formatter.dart +++ b/packages/flutter/lib/src/services/text_formatter.dart @@ -233,7 +233,7 @@ class WhitelistingTextInputFormatter extends TextInputFormatter { (String substring) { return whitelistedPattern .allMatches(substring) - .map((Match match) => match.group(0)) + .map<String>((Match match) => match.group(0)) .join(); } , ); diff --git a/packages/flutter/lib/src/widgets/image.dart b/packages/flutter/lib/src/widgets/image.dart index 59232c0b0bc3663b53a03f7620b9c19005e20312..91e87ef841d74e55350b2f0e44b6ef6c87c06d0f 100644 --- a/packages/flutter/lib/src/widgets/image.dart +++ b/packages/flutter/lib/src/widgets/image.dart @@ -98,7 +98,7 @@ Future<Null> precacheImage( } } stream.addListener(listener, onError: errorListener); - completer.future.then((Null _) { stream.removeListener(listener); }); + completer.future.then<void>((Null _) { stream.removeListener(listener); }); return completer.future; } diff --git a/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart b/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart index 78a1af1003e58beb00e42db5f48742acbaa6d4e6..cf6c9a5cacb6077cd6735a018f336e35eb45b15f 100644 --- a/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart +++ b/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart @@ -266,7 +266,7 @@ class FixedExtentScrollController extends ScrollController { curve: curve, )); } - await Future.wait(futures); + await Future.wait<void>(futures); } /// Changes which item index is centered in the controlled scroll view. diff --git a/packages/flutter/lib/src/widgets/localizations.dart b/packages/flutter/lib/src/widgets/localizations.dart index 0b4124c2993f400bfeef0c874b73b0b7436b37d0..e960ec300562f7c9876884f22bd95593d3bedf21 100644 --- a/packages/flutter/lib/src/widgets/localizations.dart +++ b/packages/flutter/lib/src/widgets/localizations.dart @@ -74,7 +74,7 @@ Future<Map<Type, dynamic>> _loadAll(Locale locale, Iterable<LocalizationsDelegat return SynchronousFuture<Map<Type, dynamic>>(output); // Some of delegate.load() values were asynchronous futures. Wait for them. - return Future.wait<dynamic>(pendingList.map((_Pending p) => p.futureValue)) + return Future.wait<dynamic>(pendingList.map<Future<dynamic>>((_Pending p) => p.futureValue)) .then<Map<Type, dynamic>>((List<dynamic> values) { assert(values.length == pendingList.length); for (int i = 0; i < values.length; i += 1) { @@ -502,7 +502,7 @@ class _LocalizationsState extends State<Localizations> { Map<Type, dynamic> typeToResources; final Future<Map<Type, dynamic>> typeToResourcesFuture = _loadAll(locale, delegates) - .then((Map<Type, dynamic> value) { + .then<Map<Type, dynamic>>((Map<Type, dynamic> value) { return typeToResources = value; }); @@ -516,7 +516,7 @@ class _LocalizationsState extends State<Localizations> { // - If we're running at app startup time then defer reporting the first // "useful" frame until after the async load has completed. WidgetsBinding.instance.deferFirstFrameReport(); - typeToResourcesFuture.then((Map<Type, dynamic> value) { + typeToResourcesFuture.then<void>((Map<Type, dynamic> value) { WidgetsBinding.instance.allowFirstFrameReport(); if (!mounted) return; diff --git a/packages/flutter/lib/src/widgets/routes.dart b/packages/flutter/lib/src/widgets/routes.dart index fd6d3dfadf8186ab570b089778d3c3c6f02acdee..9da5253da1c74d769eb2c660dfcec7cf022a772b 100644 --- a/packages/flutter/lib/src/widgets/routes.dart +++ b/packages/flutter/lib/src/widgets/routes.dart @@ -660,6 +660,7 @@ abstract class ModalRoute<T> extends TransitionRoute<T> with LocalHistoryRoute<T /// /// The given [BuildContext] will be rebuilt if the state of the route changes /// (specifically, if [isCurrent] or [canPop] change value). + @optionalTypeArgs static ModalRoute<T> of<T extends Object>(BuildContext context) { final _ModalScopeStatus widget = context.inheritFromWidgetOfExactType(_ModalScopeStatus); return widget?.route; @@ -1519,7 +1520,7 @@ Future<T> showGeneralDialog<T>({ }) { assert(pageBuilder != null); assert(!barrierDismissible || barrierLabel != null); - return Navigator.of(context, rootNavigator: true).push(_DialogRoute<T>( + return Navigator.of(context, rootNavigator: true).push<T>(_DialogRoute<T>( pageBuilder: pageBuilder, barrierDismissible: barrierDismissible, barrierLabel: barrierLabel, diff --git a/packages/flutter/lib/src/widgets/scroll_controller.dart b/packages/flutter/lib/src/widgets/scroll_controller.dart index 3c37682678cd8f0e4da8e7150b4df46a7cf6b09b..abaf543609d2ab03d890b7f72f7058f19ec65673 100644 --- a/packages/flutter/lib/src/widgets/scroll_controller.dart +++ b/packages/flutter/lib/src/widgets/scroll_controller.dart @@ -150,7 +150,7 @@ class ScrollController extends ChangeNotifier { final List<Future<Null>> animations = List<Future<Null>>(_positions.length); for (int i = 0; i < _positions.length; i += 1) animations[i] = _positions[i].animateTo(offset, duration: duration, curve: curve); - return Future.wait<Null>(animations).then((List<Null> _) => null); + return Future.wait<Null>(animations).then<Null>((List<Null> _) => null); } /// Jumps the scroll position from its current value to the given value, diff --git a/packages/flutter/lib/src/widgets/scrollable.dart b/packages/flutter/lib/src/widgets/scrollable.dart index fac04a306bf8304d43f28db452b4bb5145d84cac..d64c67a430613fbda92e5c695306435d4e8b36c5 100644 --- a/packages/flutter/lib/src/widgets/scrollable.dart +++ b/packages/flutter/lib/src/widgets/scrollable.dart @@ -213,7 +213,7 @@ class Scrollable extends StatefulWidget { return Future<Null>.value(); if (futures.length == 1) return futures.single; - return Future.wait<Null>(futures).then((List<Null> _) => null); + return Future.wait<Null>(futures).then<Null>((List<Null> _) => null); } } diff --git a/packages/flutter/lib/src/widgets/table.dart b/packages/flutter/lib/src/widgets/table.dart index 9023b5725d7400e4a9ae4e1f64293b44e33837ea..85257f1b32bf28e827499ffbd3dc35029272dd45 100644 --- a/packages/flutter/lib/src/widgets/table.dart +++ b/packages/flutter/lib/src/widgets/table.dart @@ -141,7 +141,7 @@ class Table extends RenderObjectWidget { : null, super(key: key) { assert(() { - final List<Widget> flatChildren = children.expand((TableRow row) => row.children).toList(growable: false); + final List<Widget> flatChildren = children.expand<Widget>((TableRow row) => row.children).toList(growable: false); if (debugChildrenHaveDuplicateKeys(this, flatChildren)) { throw FlutterError( 'Two or more cells in this Table contain widgets with the same key.\n' @@ -255,7 +255,7 @@ class _TableElement extends RenderObjectElement { super.mount(parent, newSlot); assert(!_debugWillReattachChildren); assert(() { _debugWillReattachChildren = true; return true; }()); - _children = widget.children.map((TableRow row) { + _children = widget.children.map<_TableElementRow>((TableRow row) { return _TableElementRow( key: row.key, children: row.children.map<Element>((Widget child) { @@ -351,7 +351,7 @@ class _TableElement extends RenderObjectElement { @override void visitChildren(ElementVisitor visitor) { - for (Element child in _children.expand((_TableElementRow row) => row.children)) { + for (Element child in _children.expand<Element>((_TableElementRow row) => row.children)) { if (!_forgottenChildren.contains(child)) visitor(child); } diff --git a/packages/flutter/lib/src/widgets/widget_inspector.dart b/packages/flutter/lib/src/widgets/widget_inspector.dart index 9b7a6245badca9307038bcdd320e1c0eeb8c9d25..941de322b394111298d3a0e89c39300ae48bc047 100644 --- a/packages/flutter/lib/src/widgets/widget_inspector.dart +++ b/packages/flutter/lib/src/widgets/widget_inspector.dart @@ -1262,7 +1262,7 @@ class WidgetInspectorService { else throw FlutterError('Cannot get parent chain for node of type ${value.runtimeType}'); - return path.map((_DiagnosticsPathNode node) => _pathNodeToJson( + return path.map<Object>((_DiagnosticsPathNode node) => _pathNodeToJson( node, _SerializeConfig(groupName: groupName), )).toList(); diff --git a/packages/flutter/test/cupertino/nav_bar_test.dart b/packages/flutter/test/cupertino/nav_bar_test.dart index 3ccadc00ed0f95fbdbd72480a5b102f1a6014e8c..0855c7ed5effc8786faa7c863a8e6648049b3ca5 100644 --- a/packages/flutter/test/cupertino/nav_bar_test.dart +++ b/packages/flutter/test/cupertino/nav_bar_test.dart @@ -262,7 +262,7 @@ void main() { return aParagraph.text.style.fontSize.compareTo(bParagraph.text.style.fontSize); }); - Iterable<double> opacities = titles.map((Element element) { + Iterable<double> opacities = titles.map<double>((Element element) { final RenderAnimatedOpacity renderOpacity = element.ancestorRenderObjectOfType(const TypeMatcher<RenderAnimatedOpacity>()); return renderOpacity.opacity.value; }); @@ -287,7 +287,7 @@ void main() { return aParagraph.text.style.fontSize.compareTo(bParagraph.text.style.fontSize); }); - opacities = titles.map((Element element) { + opacities = titles.map<double>((Element element) { final RenderAnimatedOpacity renderOpacity = element.ancestorRenderObjectOfType(const TypeMatcher<RenderAnimatedOpacity>()); return renderOpacity.opacity.value; }); diff --git a/packages/flutter/test/cupertino/route_test.dart b/packages/flutter/test/cupertino/route_test.dart index de721c5ef1871f45f782425d9dd131190102cf1b..fd706fc382ffe2524b35f8379ca48deedc4bcb0e 100644 --- a/packages/flutter/test/cupertino/route_test.dart +++ b/packages/flutter/test/cupertino/route_test.dart @@ -80,7 +80,7 @@ void main() { ); }); - final Iterable<double> opacities = titles.map((Element element) { + final Iterable<double> opacities = titles.map<double>((Element element) { final RenderAnimatedOpacity renderOpacity = element.ancestorRenderObjectOfType(const TypeMatcher<RenderAnimatedOpacity>()); return renderOpacity.opacity.value; diff --git a/packages/flutter/test/foundation/caching_iterable_test.dart b/packages/flutter/test/foundation/caching_iterable_test.dart index f93229dce9d9969baf9eec556fae66e08c008980..39e345eee05b87fec75a4829bd551759a480c629 100644 --- a/packages/flutter/test/foundation/caching_iterable_test.dart +++ b/packages/flutter/test/foundation/caching_iterable_test.dart @@ -63,7 +63,7 @@ void main() { expect(integers.first, equals(1)); expect(yieldCount, equals(2)); - expect(evens.map((int i) => i + 1), equals(<int>[3, 5])); + expect(evens.map<int>((int i) => i + 1), equals(<int>[3, 5])); expect(yieldCount, equals(5)); expect(evens, equals(<int>[2, 4])); @@ -95,13 +95,13 @@ void main() { final Iterable<int> integers = CachingIterable<int>(range(1, 5).iterator); expect(yieldCount, equals(0)); - final Iterable<int> expanded1 = integers.expand((int i) => <int>[i, i]); + final Iterable<int> expanded1 = integers.expand<int>((int i) => <int>[i, i]); expect(yieldCount, equals(0)); expect(expanded1, equals(<int>[1, 1, 2, 2, 3, 3, 4, 4, 5, 5])); expect(yieldCount, equals(5)); - final Iterable<int> expanded2 = integers.expand((int i) => <int>[i, i]); + final Iterable<int> expanded2 = integers.expand<int>((int i) => <int>[i, i]); expect(yieldCount, equals(5)); expect(expanded2, equals(<int>[1, 1, 2, 2, 3, 3, 4, 4, 5, 5])); diff --git a/packages/flutter/test/material/app_bar_test.dart b/packages/flutter/test/material/app_bar_test.dart index b22df03bbd0172ecc6a8ee2f31f3674ecc4f74a4..39687a719abea96fde0d190f602645f4e04d1432 100644 --- a/packages/flutter/test/material/app_bar_test.dart +++ b/packages/flutter/test/material/app_bar_test.dart @@ -33,7 +33,7 @@ Widget buildSliverAppBarApp({ bool floating, bool pinned, double expandedHeight, expandedHeight: expandedHeight, snap: snap, bottom: TabBar( - tabs: <String>['A','B','C'].map((String t) => Tab(text: 'TAB $t')).toList(), + tabs: <String>['A','B','C'].map<Widget>((String t) => Tab(text: 'TAB $t')).toList(), ), ), SliverToBoxAdapter( diff --git a/packages/flutter/test/material/colors_test.dart b/packages/flutter/test/material/colors_test.dart index 243fb79cf75de40b6ad50f0eb28f08dee3401067..7414363c8343e4c4c4a1146f95eeab2d9b11bb08 100644 --- a/packages/flutter/test/material/colors_test.dart +++ b/packages/flutter/test/material/colors_test.dart @@ -54,12 +54,12 @@ void main() { test('Colors swatches do not contain duplicates', () { for (MaterialColor color in Colors.primaries) - expect(primaryKeys.map((int key) => color[key]).toSet().length, primaryKeys.length); + expect(primaryKeys.map<Color>((int key) => color[key]).toSet().length, primaryKeys.length); - expect(primaryKeys.map((int key) => Colors.grey[key]).toSet().length, primaryKeys.length); + expect(primaryKeys.map<Color>((int key) => Colors.grey[key]).toSet().length, primaryKeys.length); for (MaterialAccentColor color in Colors.accents) - expect(accentKeys.map((int key) => color[key]).toSet().length, accentKeys.length); + expect(accentKeys.map<Color>((int key) => color[key]).toSet().length, accentKeys.length); }); test('All color swatch colors are opaque and equal their primary color', () { diff --git a/packages/flutter/test/material/data_table_test.dart b/packages/flutter/test/material/data_table_test.dart index 88cf8e6db4c404c74e40fe6c3d457bd7e841c5fe..d05561f6103fb4dc171a452c7a2bad6713741f77 100644 --- a/packages/flutter/test/material/data_table_test.dart +++ b/packages/flutter/test/material/data_table_test.dart @@ -32,7 +32,7 @@ void main() { } ), ], - rows: kDesserts.map((Dessert dessert) { + rows: kDesserts.map<DataRow>((Dessert dessert) { return DataRow( key: Key(dessert.name), onSelectChanged: (bool selected) { diff --git a/packages/flutter/test/material/dropdown_test.dart b/packages/flutter/test/material/dropdown_test.dart index a5fa90376cb324278c983082bf14a0b96e87494e..950629d9ed49a19458d9437f35b99e7ef2cbf70a 100644 --- a/packages/flutter/test/material/dropdown_test.dart +++ b/packages/flutter/test/material/dropdown_test.dart @@ -43,7 +43,7 @@ Widget buildFrame({ onChanged: onChanged, isDense: isDense, isExpanded: isExpanded, - items: items.map((String item) { + items: items.map<DropdownMenuItem<String>>((String item) { return DropdownMenuItem<String>( key: ValueKey<String>(item), value: item, @@ -407,7 +407,7 @@ void main() { // When isDense is true, the button's height is reduced. The menu items' // heights are not. - final double menuItemHeight = itemBoxes.map((RenderBox box) => box.size.height).reduce(math.max); + final double menuItemHeight = itemBoxes.map<double>((RenderBox box) => box.size.height).reduce(math.max); expect(menuItemHeight, greaterThan(buttonBox.size.height)); for (RenderBox itemBox in itemBoxes) { diff --git a/packages/flutter/test/material/list_tile_test.dart b/packages/flutter/test/material/list_tile_test.dart index 39ecd205f23a35dc9e3d9fccb6587b51b6482efe..4102acc73ee13e9bd950383811bc4f6509d5c450 100644 --- a/packages/flutter/test/material/list_tile_test.dart +++ b/packages/flutter/test/material/list_tile_test.dart @@ -235,7 +235,7 @@ void main() { return ListView( children: ListTile.divideTiles( context: context, - tiles: titles.map((String title) => ListTile(title: Text(title))), + tiles: titles.map<Widget>((String title) => ListTile(title: Text(title))), ).toList(), ); }, diff --git a/packages/flutter/test/material/page_selector_test.dart b/packages/flutter/test/material/page_selector_test.dart index 42a1ae06c472bd25d062da5b7467da0a68b74c49..8a4101324b200e468193bb130a20fbc67c0dddf9 100644 --- a/packages/flutter/test/material/page_selector_test.dart +++ b/packages/flutter/test/material/page_selector_test.dart @@ -52,7 +52,7 @@ List<Color> indicatorColors(WidgetTester tester) { matching: find.byType(TabPageSelectorIndicator) ) ); - return indicators.map((TabPageSelectorIndicator indicator) => indicator.backgroundColor).toList(); + return indicators.map<Color>((TabPageSelectorIndicator indicator) => indicator.backgroundColor).toList(); } void main() { diff --git a/packages/flutter/test/material/refresh_indicator_test.dart b/packages/flutter/test/material/refresh_indicator_test.dart index ea49f944300188918220aed2d5e12eb50f1492aa..4e6e0be66c5c45ad2ea1071fb811a7559af039db 100644 --- a/packages/flutter/test/material/refresh_indicator_test.dart +++ b/packages/flutter/test/material/refresh_indicator_test.dart @@ -29,7 +29,7 @@ void main() { onRefresh: refresh, child: ListView( physics: const AlwaysScrollableScrollPhysics(), - children: <String>['A', 'B', 'C', 'D', 'E', 'F'].map((String item) { + children: <String>['A', 'B', 'C', 'D', 'E', 'F'].map<Widget>((String item) { return SizedBox( height: 200.0, child: Text(item), @@ -61,7 +61,7 @@ void main() { width: 600.0, child: ListView( physics: const AlwaysScrollableScrollPhysics(), - children: <String>['A', 'B', 'C', 'D', 'E', 'F'].map((String item) { + children: <String>['A', 'B', 'C', 'D', 'E', 'F'].map<Widget>((String item) { return SizedBox( height: 200.0, child: Text(item), @@ -362,7 +362,7 @@ void main() { }, child: ListView( physics: const AlwaysScrollableScrollPhysics(), - children: <String>['A', 'B', 'C', 'D', 'E', 'F'].map((String item) { + children: <String>['A', 'B', 'C', 'D', 'E', 'F'].map<Widget>((String item) { return SizedBox( height: 200.0, child: Text(item), @@ -393,7 +393,7 @@ void main() { child: ListView( controller: controller, physics: const AlwaysScrollableScrollPhysics(), - children: <String>['A', 'B', 'C', 'D', 'E', 'F'].map((String item) { + children: <String>['A', 'B', 'C', 'D', 'E', 'F'].map<Widget>((String item) { return SizedBox( height: 200.0, child: Text(item), diff --git a/packages/flutter/test/material/reorderable_list_test.dart b/packages/flutter/test/material/reorderable_list_test.dart index bc21f799c0c0db65c92e580a2e9928cdf04a4ead..bab13e2904ddb3f94fd5f4e0eeec08df4e5fb3ab 100644 --- a/packages/flutter/test/material/reorderable_list_test.dart +++ b/packages/flutter/test/material/reorderable_list_test.dart @@ -39,7 +39,7 @@ void main() { width: itemHeight * 10, child: ReorderableListView( header: header, - children: listItems.map(listItemToWidget).toList(), + children: listItems.map<Widget>(listItemToWidget).toList(), scrollDirection: scrollDirection, onReorder: onReorder, ), diff --git a/packages/flutter/test/material/tabs_test.dart b/packages/flutter/test/material/tabs_test.dart index 81dc96b811ec1815d6e12fbedac6d220421a45ed..5eab06630c0354fb40e8be2350b838ce22ec4207 100644 --- a/packages/flutter/test/material/tabs_test.dart +++ b/packages/flutter/test/material/tabs_test.dart @@ -78,7 +78,7 @@ Widget buildFrame({ length: tabs.length, child: TabBar( key: tabBarKey, - tabs: tabs.map((String tab) => Tab(text: tab)).toList(), + tabs: tabs.map<Widget>((String tab) => Tab(text: tab)).toList(), isScrollable: isScrollable, indicatorColor: indicatorColor, ), @@ -134,7 +134,7 @@ Widget buildLeftRightApp({ List<String> tabs, String value }) { appBar: AppBar( title: const Text('tabs'), bottom: TabBar( - tabs: tabs.map((String tab) => Tab(text: tab)).toList(), + tabs: tabs.map<Widget>((String tab) => Tab(text: tab)).toList(), ), ), body: const TabBarView( @@ -295,7 +295,7 @@ void main() { initialIndex: tabs.indexOf(value), length: tabs.length, child: TabBarView( - children: tabs.map((String name) { + children: tabs.map<Widget>((String name) { return StateMarker( child: Text(name) ); @@ -483,11 +483,11 @@ void main() { title: const Text('tabs'), bottom: TabBar( isScrollable: true, - tabs: tabs.map((String tab) => Tab(text: tab)).toList(), + tabs: tabs.map<Widget>((String tab) => Tab(text: tab)).toList(), ), ), body: TabBarView( - children: tabs.map((String name) => Text('${index++}')).toList(), + children: tabs.map<Widget>((String name) => Text('${index++}')).toList(), ), ), ), @@ -550,7 +550,7 @@ void main() { title: const Text('tabs'), bottom: TabBar( controller: controller, - tabs: tabs.map((String tab) => Tab(text: tab)).toList(), + tabs: tabs.map<Widget>((String tab) => Tab(text: tab)).toList(), ), ), body: TabBarView( @@ -609,7 +609,7 @@ void main() { title: const Text('tabs'), bottom: TabBar( controller: controller, - tabs: tabs.map((String tab) => Tab(text: tab)).toList(), + tabs: tabs.map<Widget>((String tab) => Tab(text: tab)).toList(), ), ), body: TabBarView( @@ -1866,7 +1866,7 @@ void main() { title: const Text('tabs'), bottom: TabBar( controller: controller, - tabs: tabs.map((String tab) => Tab(text: tab)).toList(), + tabs: tabs.map<Widget>((String tab) => Tab(text: tab)).toList(), ), ), body: TabBarView( diff --git a/packages/flutter/test/material/text_field_test.dart b/packages/flutter/test/material/text_field_test.dart index 46979c5fb488a3c1094952af3b9dcafaf41cdbbf..0124ededa573ce3aa7641dcab0be60aa35b30449 100644 --- a/packages/flutter/test/material/text_field_test.dart +++ b/packages/flutter/test/material/text_field_test.dart @@ -145,7 +145,7 @@ void main() { } List<TextSelectionPoint> globalize(Iterable<TextSelectionPoint> points, RenderBox box) { - return points.map((TextSelectionPoint point) { + return points.map<TextSelectionPoint>((TextSelectionPoint point) { return TextSelectionPoint( box.localToGlobal(point.point), point.direction, diff --git a/packages/flutter/test/material/theme_test.dart b/packages/flutter/test/material/theme_test.dart index 8ea5f38eb37e3f820925270a091bf4d02b841b42..81f060d31956090ac7ecfbf4e3dde7ea706e03d5 100644 --- a/packages/flutter/test/material/theme_test.dart +++ b/packages/flutter/test/material/theme_test.dart @@ -388,7 +388,7 @@ void main() { } for (TextTheme textTheme in <TextTheme>[theme.textTheme, theme.primaryTextTheme, theme.accentTextTheme]) { - for (TextStyle style in extractStyles(textTheme).map((TextStyle style) => _TextStyleProxy(style))) { + for (TextStyle style in extractStyles(textTheme).map<TextStyle>((TextStyle style) => _TextStyleProxy(style))) { expect(style.inherit, false); expect(style.color, isNotNull); expect(style.fontFamily, isNotNull); diff --git a/packages/flutter/test/scheduler/scheduler_test.dart b/packages/flutter/test/scheduler/scheduler_test.dart index 60c5178191d26f5223a241900b0a47eb9bbe1e99..75eb269fdd53b67b1427de97eab0ddc55f7fcfb5 100644 --- a/packages/flutter/test/scheduler/scheduler_test.dart +++ b/packages/flutter/test/scheduler/scheduler_test.dart @@ -94,7 +94,7 @@ void main() { test('2 calls to scheduleWarmUpFrame just schedules it once', () { final List<VoidCallback> timerQueueTasks = <VoidCallback>[]; bool taskExecuted = false; - runZoned( + runZoned<void>( () { // Run it twice without processing the queued tasks. scheduler.scheduleWarmUpFrame(); diff --git a/packages/flutter/test/widgets/custom_painter_test.dart b/packages/flutter/test/widgets/custom_painter_test.dart index 52369b900a52302e23f82d5f37b40ee1d70e9e87..03455e53dcc9fffcbf4de95e6692a7e505102aba 100644 --- a/packages/flutter/test/widgets/custom_painter_test.dart +++ b/packages/flutter/test/widgets/custom_painter_test.dart @@ -363,7 +363,7 @@ void _defineTests() { TestSemantics.rootChild( id: expectedId, rect: TestSemantics.fullScreen, - actions: allActions.fold(0, (int previous, SemanticsAction action) => previous | action.index), + actions: allActions.fold<int>(0, (int previous, SemanticsAction action) => previous | action.index), ), ] ), diff --git a/packages/flutter/test/widgets/dismissible_test.dart b/packages/flutter/test/widgets/dismissible_test.dart index 71e19d832dfb3227208eff69f2f68aa695494e1b..084de05bdc98f046f2ad45dd6826ece82ac4934a 100644 --- a/packages/flutter/test/widgets/dismissible_test.dart +++ b/packages/flutter/test/widgets/dismissible_test.dart @@ -53,7 +53,7 @@ Widget buildTest({ double startToEndThreshold, TextDirection textDirection = Tex itemExtent: itemExtent, children: <int>[0, 1, 2, 3, 4] .where((int i) => !dismissedItems.contains(i)) - .map(buildDismissibleItem).toList(), + .map<Widget>(buildDismissibleItem).toList(), ), ); }, diff --git a/packages/flutter/test/widgets/grid_view_test.dart b/packages/flutter/test/widgets/grid_view_test.dart index 1adc5e787a43cad9f5ac4f175354b28710b0c197..38b478630f361444e73f90709c0dbef2e65f17f8 100644 --- a/packages/flutter/test/widgets/grid_view_test.dart +++ b/packages/flutter/test/widgets/grid_view_test.dart @@ -29,7 +29,7 @@ void main() { textDirection: TextDirection.ltr, child: GridView.count( crossAxisCount: 4, - children: kStates.map((String state) { + children: kStates.map<Widget>((String state) { return GestureDetector( onTap: () { log.add(state); @@ -100,7 +100,7 @@ void main() { textDirection: TextDirection.ltr, child: GridView.extent( maxCrossAxisExtent: 200.0, - children: kStates.map((String state) { + children: kStates.map<Widget>((String state) { return GestureDetector( onTap: () { log.add(state); diff --git a/packages/flutter/test/widgets/heroes_test.dart b/packages/flutter/test/widgets/heroes_test.dart index 850ae99f14aad82f0ab7e041f041b8622e06dd5c..45fd966c840ab3c0bf0c3c528bf6f66ac75bc285 100644 --- a/packages/flutter/test/widgets/heroes_test.dart +++ b/packages/flutter/test/widgets/heroes_test.dart @@ -948,7 +948,7 @@ void main() { // One Opacity widget per Hero, only one now has opacity 0.0 final Iterable<RenderOpacity> renderers = tester.renderObjectList(find.byType(Opacity)); - final Iterable<double> opacities = renderers.map((RenderOpacity r) => r.opacity); + final Iterable<double> opacities = renderers.map<double>((RenderOpacity r) => r.opacity); expect(opacities.singleWhere((double opacity) => opacity == 0.0), 0.0); // Hero BC's flight finishes normally. diff --git a/packages/flutter/test/widgets/image_headers_test.dart b/packages/flutter/test/widgets/image_headers_test.dart index a4dc552616e7892595ca5b4ea727a0df2edd2efa..c7f8de1325e0c632b37689581669c56342c5500e 100644 --- a/packages/flutter/test/widgets/image_headers_test.dart +++ b/packages/flutter/test/widgets/image_headers_test.dart @@ -18,7 +18,7 @@ void main() { final MockHttpHeaders headers = MockHttpHeaders(); testWidgets('Headers', (WidgetTester tester) async { - HttpOverrides.runZoned(() async { + HttpOverrides.runZoned<Future<void>>(() async { await tester.pumpWidget(Image.network( 'https://www.example.com/images/frame.png', headers: const <String, String>{'flutter': 'flutter'}, diff --git a/packages/flutter/test/widgets/list_view_horizontal_test.dart b/packages/flutter/test/widgets/list_view_horizontal_test.dart index 8ed0474ff45ebe567505b8d4f735629dec22d333..fb425be03cb23e382ecb6ced414148aac95fda81 100644 --- a/packages/flutter/test/widgets/list_view_horizontal_test.dart +++ b/packages/flutter/test/widgets/list_view_horizontal_test.dart @@ -19,7 +19,7 @@ Widget buildFrame({ bool reverse = false, @required TextDirection textDirection scrollDirection: Axis.horizontal, reverse: reverse, physics: const BouncingScrollPhysics(), - children: items.map((int item) { + children: items.map<Widget>((int item) { return Container( child: Text('$item') ); diff --git a/packages/flutter/test/widgets/list_view_vertical_test.dart b/packages/flutter/test/widgets/list_view_vertical_test.dart index ebc3fe298d5cf35a0cf26e97a17253b478f1dad5..617be7eb634c9a339fc3bec50616de0a85a1a513 100644 --- a/packages/flutter/test/widgets/list_view_vertical_test.dart +++ b/packages/flutter/test/widgets/list_view_vertical_test.dart @@ -13,7 +13,7 @@ Widget buildFrame() { child: ListView( itemExtent: 290.0, scrollDirection: Axis.vertical, - children: items.map((int item) { + children: items.map<Widget>((int item) { return Container( child: Text('$item') ); @@ -74,7 +74,7 @@ void main() { itemExtent: 290.0, padding: const EdgeInsets.only(top: 250.0), scrollDirection: Axis.vertical, - children: items.map((int item) { + children: items.map<Widget>((int item) { return Container( child: Text('$item') ); diff --git a/packages/flutter/test/widgets/nested_scroll_view_test.dart b/packages/flutter/test/widgets/nested_scroll_view_test.dart index fd091f5d81df0c213505cab4e100b1cb32f6fb9b..b52360bc2a5214170ab9bad212afe62cf522183c 100644 --- a/packages/flutter/test/widgets/nested_scroll_view_test.dart +++ b/packages/flutter/test/widgets/nested_scroll_view_test.dart @@ -389,7 +389,7 @@ void main() { forceElevated: innerBoxIsScrolled, bottom: TabBar( // These are the widgets to put in each tab in the tab bar. - tabs: _tabs.map((String name) => Tab(text: name)).toList(), + tabs: _tabs.map<Widget>((String name) => Tab(text: name)).toList(), ), ), ), @@ -397,7 +397,7 @@ void main() { }, body: TabBarView( // These are the contents of the tab views, below the tabs. - children: _tabs.map((String name) { + children: _tabs.map<Widget>((String name) { return SafeArea( top: false, bottom: false, diff --git a/packages/flutter/test/widgets/pageable_list_test.dart b/packages/flutter/test/widgets/pageable_list_test.dart index 670a23303ac928edc04607e37ba4f98b7ed08d2f..79f2dda8a32e63cb64d2ed377c3ee36d2ff50105 100644 --- a/packages/flutter/test/widgets/pageable_list_test.dart +++ b/packages/flutter/test/widgets/pageable_list_test.dart @@ -9,7 +9,7 @@ import 'package:meta/meta.dart'; Size pageSize = const Size(600.0, 300.0); const List<int> defaultPages = <int>[0, 1, 2, 3, 4, 5]; -final List<GlobalKey> globalKeys = defaultPages.map((_) => GlobalKey()).toList(); +final List<GlobalKey> globalKeys = defaultPages.map<GlobalKey>((_) => GlobalKey()).toList(); int currentPage; Widget buildPage(int page) { @@ -30,7 +30,7 @@ Widget buildFrame({ scrollDirection: Axis.horizontal, reverse: reverse, onPageChanged: (int page) { currentPage = page; }, - children: pages.map(buildPage).toList(), + children: pages.map<Widget>(buildPage).toList(), ); // The test framework forces the frame to be 800x600, so we need to create diff --git a/packages/flutter/test/widgets/scrollable_list_hit_testing_test.dart b/packages/flutter/test/widgets/scrollable_list_hit_testing_test.dart index 862873e9a2b71b98e860a7d27de4be41efc0e3b0..c06da6d576a016bd4787b28e0303457da002517f 100644 --- a/packages/flutter/test/widgets/scrollable_list_hit_testing_test.dart +++ b/packages/flutter/test/widgets/scrollable_list_hit_testing_test.dart @@ -20,7 +20,7 @@ void main() { child: ListView( itemExtent: 290.0, scrollDirection: Axis.horizontal, - children: items.map((int item) { + children: items.map<Widget>((int item) { return Container( child: GestureDetector( onTap: () { tapped.add(item); }, @@ -62,7 +62,7 @@ void main() { child: ListView( itemExtent: 290.0, scrollDirection: Axis.vertical, - children: items.map((int item) { + children: items.map<Widget>((int item) { return Container( child: GestureDetector( onTap: () { tapped.add(item); }, @@ -104,7 +104,7 @@ void main() { child: ListView( itemExtent: 290.0, padding: const EdgeInsets.fromLTRB(5.0, 20.0, 15.0, 10.0), - children: items.map((int item) { + children: items.map<Widget>((int item) { return Container( child: GestureDetector( onTap: () { tapped.add(item); }, @@ -139,7 +139,7 @@ void main() { itemExtent: 290.0, reverse: true, padding: const EdgeInsets.fromLTRB(5.0, 20.0, 15.0, 10.0), - children: items.map((int item) { + children: items.map<Widget>((int item) { return Container( child: GestureDetector( onTap: () { tapped.add(item); }, @@ -173,7 +173,7 @@ void main() { textDirection: TextDirection.ltr, child: ListView( itemExtent: 200.0, - children: items.map((int item) { + children: items.map<Widget>((int item) { return Container( child: GestureDetector( onTap: () { tapped.add(item); }, diff --git a/packages/flutter/test/widgets/semantics_test.dart b/packages/flutter/test/widgets/semantics_test.dart index 82ea8d606d46e5e7c3d1ab6df31160c80cb0d359..c2214c714ee9172f59fba35a02880f53df745deb 100644 --- a/packages/flutter/test/widgets/semantics_test.dart +++ b/packages/flutter/test/widgets/semantics_test.dart @@ -427,7 +427,7 @@ void main() { TestSemantics.rootChild( id: expectedId, rect: TestSemantics.fullScreen, - actions: allActions.fold(0, (int previous, SemanticsAction action) => previous | action.index), + actions: allActions.fold<int>(0, (int previous, SemanticsAction action) => previous | action.index), ), ], ); diff --git a/packages/flutter/test/widgets/semantics_tester.dart b/packages/flutter/test/widgets/semantics_tester.dart index 455275a199b0270f2aed3e8acd69515822029ad2..c10779a6f72919321de8cccd53ed44381c1a68ba 100644 --- a/packages/flutter/test/widgets/semantics_tester.dart +++ b/packages/flutter/test/widgets/semantics_tester.dart @@ -325,7 +325,7 @@ class TestSemantics { if (rect != null) buf.writeln('$indent rect: $rect,'); if (transform != null) - buf.writeln('$indent transform:\n${transform.toString().trim().split('\n').map((String line) => '$indent $line').join('\n')},'); + buf.writeln('$indent transform:\n${transform.toString().trim().split('\n').map<String>((String line) => '$indent $line').join('\n')},'); buf.writeln('$indent children: <TestSemantics>['); for (TestSemantics child in children) { buf.writeln('${child.toString(indentAmount + 2)},'); @@ -403,13 +403,13 @@ class SemanticsTester { if (textDirection != null && node.textDirection != textDirection) return false; if (actions != null) { - final int expectedActions = actions.fold(0, (int value, SemanticsAction action) => value | action.index); + final int expectedActions = actions.fold<int>(0, (int value, SemanticsAction action) => value | action.index); final int actualActions = node.getSemanticsData().actions; if (expectedActions != actualActions) return false; } if (flags != null) { - final int expectedFlags = flags.fold(0, (int value, SemanticsFlag flag) => value | flag.index); + final int expectedFlags = flags.fold<int>(0, (int value, SemanticsFlag flag) => value | flag.index); final int actualFlags = node.getSemanticsData().flags; if (expectedFlags != actualFlags) return false; @@ -503,7 +503,7 @@ class SemanticsTester { } static String _tagsToSemanticsTagExpression(Set<SemanticsTag> tags) { - return '<SemanticsTag>[${tags.map((SemanticsTag tag) => 'const SemanticsTag(\'${tag.name}\')').join(', ')}]'; + return '<SemanticsTag>[${tags.map<String>((SemanticsTag tag) => 'const SemanticsTag(\'${tag.name}\')').join(', ')}]'; } static String _actionsToSemanticsActionExpression(dynamic actions) { @@ -565,7 +565,7 @@ class SemanticsTester { } buf.write(')'); - return buf.toString().split('\n').map((String l) => '$indent$l').join('\n'); + return buf.toString().split('\n').map<String>((String l) => '$indent$l').join('\n'); } } @@ -614,7 +614,7 @@ class _HasSemantics extends Matcher { } String _indent(String text) { - return text.toString().trimRight().split('\n').map((String line) => ' $line').join('\n'); + return text.toString().trimRight().split('\n').map<String>((String line) => ' $line').join('\n'); } @override diff --git a/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart b/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart index 4b9202140736befc0f417ef0e970b647b4aad117..730d8307aab1d01836bf5f6f3872a49180a5b530 100644 --- a/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart +++ b/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart @@ -56,7 +56,7 @@ void _tests() { final String code = semantics .generateTestSemanticsExpressionForCurrentSemanticsTree(DebugSemanticsDumpOrder.inverseHitTest) .split('\n') - .map((String line) => line.trim()) + .map<String>((String line) => line.trim()) .join('\n') .trim() + ','; @@ -82,7 +82,7 @@ void _tests() { expectedCode.indexOf('^' * 12) - 3, ) .split('\n') - .map((String line) => line.trim()) + .map<String>((String line) => line.trim()) .join('\n') .trim(); semantics.dispose(); diff --git a/packages/flutter/test/widgets/sliver_list_test.dart b/packages/flutter/test/widgets/sliver_list_test.dart index 9ab78b700e70ca4f0ebeddff0bc024850a7eb429..9db3c881ceffd5fb2a444bc98b57135ac8e40017 100644 --- a/packages/flutter/test/widgets/sliver_list_test.dart +++ b/packages/flutter/test/widgets/sliver_list_test.dart @@ -76,7 +76,7 @@ void main() { expect(find.text('Tile 19'), findsOneWidget); await tester.pumpWidget(_buildSliverList( - items: items.map((int i) => i + 100).toList(), + items: items.map<int>((int i) => i + 100).toList(), controller: controller, itemHeight: itemHeight, viewportHeight: viewportHeight, diff --git a/packages/flutter/test/widgets/slivers_block_global_key_test.dart b/packages/flutter/test/widgets/slivers_block_global_key_test.dart index 92a28604c84ccebcaaa7841c4b94443c48910cf4..2aa787d84e4bb696238b550a619bbb8b43f4154b 100644 --- a/packages/flutter/test/widgets/slivers_block_global_key_test.dart +++ b/packages/flutter/test/widgets/slivers_block_global_key_test.dart @@ -34,7 +34,7 @@ Future<Null> test(WidgetTester tester, double offset, List<int> keys) { offset: ViewportOffset.fixed(offset), slivers: <Widget>[ SliverList( - delegate: SliverChildListDelegate(keys.map((int key) { + delegate: SliverChildListDelegate(keys.map<Widget>((int key) { return SizedBox(key: GlobalObjectKey(key), height: 100.0, child: GenerationText(key)); }).toList()), ), diff --git a/packages/flutter_driver/lib/src/driver/driver.dart b/packages/flutter_driver/lib/src/driver/driver.dart index 7e130d7776082ab99754bb9e4b8797d1a485759d..5aa1e47dc9b125478eaf2bb1074fd078fd966e6b 100644 --- a/packages/flutter_driver/lib/src/driver/driver.dart +++ b/packages/flutter_driver/lib/src/driver/driver.dart @@ -78,7 +78,7 @@ final Duration _kPauseBetweenReconnectAttempts = _kShortTimeout ~/ 5; // See https://github.com/dart-lang/sdk/blob/master/runtime/vm/timeline.cc#L32 String _timelineStreamsToString(List<TimelineStream> streams) { - final String contents = streams.map((TimelineStream stream) { + final String contents = streams.map<String>((TimelineStream stream) { switch (stream) { case TimelineStream.all: return 'all'; case TimelineStream.api: return 'API'; @@ -428,7 +428,7 @@ class FlutterDriver { /// The move events are generated at a given [frequency] in Hz (or events per /// second). It defaults to 60Hz. Future<Null> scroll(SerializableFinder finder, double dx, double dy, Duration duration, { int frequency = 60, Duration timeout }) async { - return await _sendCommand(Scroll(finder, dx, dy, duration, frequency, timeout: timeout)).then((Map<String, dynamic> _) => null); + return await _sendCommand(Scroll(finder, dx, dy, duration, frequency, timeout: timeout)).then<Null>((Map<String, dynamic> _) => null); } /// Scrolls the Scrollable ancestor of the widget located by [finder] @@ -439,7 +439,7 @@ class FlutterDriver { /// then this method may fail because [finder] doesn't actually exist. /// The [scrollUntilVisible] method can be used in this case. Future<Null> scrollIntoView(SerializableFinder finder, { double alignment = 0.0, Duration timeout }) async { - return await _sendCommand(ScrollIntoView(finder, alignment: alignment, timeout: timeout)).then((Map<String, dynamic> _) => null); + return await _sendCommand(ScrollIntoView(finder, alignment: alignment, timeout: timeout)).then<Null>((Map<String, dynamic> _) => null); } /// Repeatedly [scroll] the widget located by [scrollable] by [dxScroll] and @@ -483,7 +483,7 @@ class FlutterDriver { // the chance to complete if the item is already onscreen; if not, scroll // repeatedly until we either find the item or time out. bool isVisible = false; - waitFor(item, timeout: timeout).then((Null value) { isVisible = true; }); + waitFor(item, timeout: timeout).then<void>((Null value) { isVisible = true; }); await Future<Null>.delayed(const Duration(milliseconds: 500)); while (!isVisible) { await scroll(scrollable, dxScroll, dyScroll, const Duration(milliseconds: 100)); diff --git a/packages/flutter_driver/lib/src/driver/timeline.dart b/packages/flutter_driver/lib/src/driver/timeline.dart index 34be834abcf58da09ae2ae550569efe518abd26c..6bb3087659b4318eaa4f4cc235e9773ecb03f35e 100644 --- a/packages/flutter_driver/lib/src/driver/timeline.dart +++ b/packages/flutter_driver/lib/src/driver/timeline.dart @@ -129,6 +129,6 @@ List<TimelineEvent> _parseEvents(Map<String, dynamic> json) { // TODO(vegorov): use instance method version of castFrom when it is available. return Iterable.castFrom<dynamic, Map<String, dynamic>>(jsonEvents) - .map((Map<String, dynamic> eventJson) => TimelineEvent(eventJson)) + .map<TimelineEvent>((Map<String, dynamic> eventJson) => TimelineEvent(eventJson)) .toList(); } diff --git a/packages/flutter_driver/lib/src/driver/timeline_summary.dart b/packages/flutter_driver/lib/src/driver/timeline_summary.dart index 09e61de8814073266fecf077ad0a0389517dd52c..64e7dc0056ea1076011a60c850b688f56d932df4 100644 --- a/packages/flutter_driver/lib/src/driver/timeline_summary.dart +++ b/packages/flutter_driver/lib/src/driver/timeline_summary.dart @@ -98,10 +98,10 @@ class TimelineSummary { 'missed_frame_rasterizer_budget_count': computeMissedFrameRasterizerBudgetCount(), 'frame_count': countFrames(), 'frame_build_times': _extractFrameDurations() - .map((Duration duration) => duration.inMicroseconds) + .map<int>((Duration duration) => duration.inMicroseconds) .toList(), 'frame_rasterizer_times': _extractGpuRasterizerDrawEvents() - .map((TimedEvent event) => event.duration.inMicroseconds) + .map<int>((TimedEvent event) => event.duration.inMicroseconds) .toList(), }; } @@ -143,7 +143,7 @@ class TimelineSummary { } List<Duration> _extractDurations(String name) { - return _extractNamedEvents(name).map((TimelineEvent event) => event.duration).toList(); + return _extractNamedEvents(name).map<Duration>((TimelineEvent event) => event.duration).toList(); } /// Extracts timed events that are reported as a pair of begin/end events. @@ -199,7 +199,7 @@ class TimelineSummary { List<Duration> _extractFrameDurations() => _extractDurations('Frame'); Iterable<Duration> _extractDuration(Iterable<TimedEvent> events) { - return events.map((TimedEvent e) => e.duration); + return events.map<Duration>((TimedEvent e) => e.duration); } } diff --git a/packages/flutter_driver/test/flutter_driver_test.dart b/packages/flutter_driver/test/flutter_driver_test.dart index d8d8adbd9934c6bf33dd4c45d3602e0a614087ca..eed263a2a9d210f297be054f0da902caa579f32a 100644 --- a/packages/flutter_driver/test/flutter_driver_test.dart +++ b/packages/flutter_driver/test/flutter_driver_test.dart @@ -28,7 +28,7 @@ void main() { MockPeer mockPeer; void expectLogContains(String message) { - expect(log.map((LogRecord r) => '$r'), anyElement(contains(message))); + expect(log.map<String>((LogRecord r) => '$r'), anyElement(contains(message))); } setUp(() { diff --git a/packages/flutter_test/lib/src/binding.dart b/packages/flutter_test/lib/src/binding.dart index 2d47644df92ae2d00f5d5317abc47f28aa6adea1..80c3fb8435f3017e04a469485b2e32d772db5352 100644 --- a/packages/flutter_test/lib/src/binding.dart +++ b/packages/flutter_test/lib/src/binding.dart @@ -228,7 +228,7 @@ abstract class TestWidgetsFlutterBinding extends BindingBase /// Artificially calls dispatchLocaleChanged on the Widget binding, /// then flushes microtasks. Future<Null> setLocale(String languageCode, String countryCode) { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { assert(inTest); final Locale locale = Locale(languageCode, countryCode); dispatchLocaleChanged(locale); @@ -243,7 +243,7 @@ abstract class TestWidgetsFlutterBinding extends BindingBase /// /// Set to null to use the default surface size. Future<Null> setSurfaceSize(Size size) { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { assert(inTest); if (_surfaceSize == size) return null; @@ -273,7 +273,7 @@ abstract class TestWidgetsFlutterBinding extends BindingBase /// to recursively schedule new microtasks. Will not run any timers scheduled /// after this method was invoked, even if they are zero-time timers. Future<Null> idle() { - return TestAsyncUtils.guard(() { + return TestAsyncUtils.guard<Null>(() { final Completer<Null> completer = Completer<Null>(); Timer.run(() { completer.complete(null); @@ -537,7 +537,7 @@ abstract class TestWidgetsFlutterBinding extends BindingBase ); _parentZone = Zone.current; final Zone testZone = _parentZone.fork(specification: errorHandlingZoneSpecification); - testZone.runBinary(_runTestBody, testBody, invariantTester) + testZone.runBinary<Future<Null>, Future<Null> Function(), VoidCallback>(_runTestBody, testBody, invariantTester) .whenComplete(testCompletionHandler); timeout?.catchError(handleUncaughtError); return testCompleter.future; @@ -689,7 +689,7 @@ class AutomatedTestWidgetsFlutterBinding extends TestWidgetsFlutterBinding { @override Future<Null> pump([ Duration duration, EnginePhase newPhase = EnginePhase.sendSemanticsUpdate ]) { - return TestAsyncUtils.guard(() { + return TestAsyncUtils.guard<Null>(() { assert(inTest); assert(_clock != null); if (duration != null) @@ -741,7 +741,7 @@ class AutomatedTestWidgetsFlutterBinding extends TestWidgetsFlutterBinding { addTime(additionalTime); - return realAsyncZone.run(() { + return realAsyncZone.run<Future<T>>(() { _pendingAsyncTasks = Completer<void>(); return callback().catchError((dynamic exception, StackTrace stack) { FlutterError.reportError(FlutterErrorDetails( @@ -1197,7 +1197,7 @@ class LiveTestWidgetsFlutterBinding extends TestWidgetsFlutterBinding { assert(inTest); assert(!_expectingFrame); assert(_pendingFrame == null); - return TestAsyncUtils.guard(() { + return TestAsyncUtils.guard<Null>(() { if (duration != null) { Timer(duration, () { _expectingFrame = true; diff --git a/packages/flutter_test/lib/src/controller.dart b/packages/flutter_test/lib/src/controller.dart index d2c18d2694da8df7056dd10c0d032cfc559c6bf4..0d70e844392b2fe96f48f8bce202fe12927c36ba 100644 --- a/packages/flutter_test/lib/src/controller.dart +++ b/packages/flutter_test/lib/src/controller.dart @@ -46,7 +46,7 @@ abstract class WidgetController { Iterable<Widget> get allWidgets { TestAsyncUtils.guardSync(); return allElements - .map((Element element) => element.widget); + .map<Widget>((Element element) => element.widget); } /// The matching widget in the widget tree. @@ -137,7 +137,7 @@ abstract class WidgetController { TestAsyncUtils.guardSync(); return allElements .whereType<StatefulElement>() - .map((StatefulElement element) => element.state); + .map<State>((StatefulElement element) => element.state); } /// The matching state in the widget tree. @@ -173,7 +173,7 @@ abstract class WidgetController { /// * Use [firstState] if you expect to match several but only want the first. Iterable<T> stateList<T extends State>(Finder finder) { TestAsyncUtils.guardSync(); - return finder.evaluate().map((Element element) => _stateOf<T>(element, finder)); + return finder.evaluate().map<T>((Element element) => _stateOf<T>(element, finder)); } T _stateOf<T extends State>(Element element, Finder finder) { @@ -194,7 +194,7 @@ abstract class WidgetController { Iterable<RenderObject> get allRenderObjects { TestAsyncUtils.guardSync(); return allElements - .map((Element element) => element.renderObject); + .map<RenderObject>((Element element) => element.renderObject); } /// The render object of the matching widget in the widget tree. @@ -262,7 +262,7 @@ abstract class WidgetController { /// Dispatch a pointer down / pointer up sequence at the given location. Future<Null> tapAt(Offset location, { int pointer }) { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { final TestGesture gesture = await startGesture(location, pointer: pointer); await gesture.up(); return null; @@ -293,7 +293,7 @@ abstract class WidgetController { /// Dispatch a pointer down / pointer up sequence at the given location with /// a delay of [kLongPressTimeout] + [kPressTimeout] between the two events. Future<Null> longPressAt(Offset location, { int pointer }) { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { final TestGesture gesture = await startGesture(location, pointer: pointer); await pump(kLongPressTimeout + kPressTimeout); await gesture.up(); @@ -371,7 +371,7 @@ abstract class WidgetController { }) { assert(offset.distance > 0.0); assert(speed > 0.0); // speed is pixels/second - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { final TestPointer testPointer = TestPointer(pointer ?? _getNextPointer()); final HitTestResult result = hitTestOnBinding(startLocation); const int kMoveCount = 50; // Needs to be >= kHistorySize, see _LeastSquaresVelocityTrackerStrategy @@ -428,7 +428,7 @@ abstract class WidgetController { /// system identifies the gesture as a fling, consider using [flingFrom] /// instead. Future<Null> dragFrom(Offset startLocation, Offset offset, { int pointer }) { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { final TestGesture gesture = await startGesture(startLocation, pointer: pointer); assert(gesture != null); await gesture.moveBy(offset); @@ -469,7 +469,7 @@ abstract class WidgetController { /// Forwards the given pointer event to the binding. Future<Null> sendEventToBinding(PointerEvent event, HitTestResult result) { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { binding.dispatchEvent(event, result); return null; }); diff --git a/packages/flutter_test/lib/src/finders.dart b/packages/flutter_test/lib/src/finders.dart index 6341190d4eb139f581ae960675e91a43438dcddb..2d41b0334c3ddb5d45e76c3cf0dd0c234747df25 100644 --- a/packages/flutter_test/lib/src/finders.dart +++ b/packages/flutter_test/lib/src/finders.dart @@ -633,7 +633,7 @@ class _DescendantFinder extends Finder { @override Iterable<Element> get allCandidates { final Iterable<Element> ancestorElements = ancestor.evaluate(); - final List<Element> candidates = ancestorElements.expand( + final List<Element> candidates = ancestorElements.expand<Element>( (Element element) => collectAllElementsFrom(element, skipOffstage: skipOffstage) ).toSet().toList(); if (matchRoot) diff --git a/packages/flutter_test/lib/src/goldens.dart b/packages/flutter_test/lib/src/goldens.dart index eeab00b7f56c63deb7c00fb6c51c465127add615..5ef149388eba911371bca32546402a4773936f6d 100644 --- a/packages/flutter_test/lib/src/goldens.dart +++ b/packages/flutter_test/lib/src/goldens.dart @@ -181,7 +181,7 @@ class LocalFileComparator implements GoldenFileComparator { throw test_package.TestFailure('Could not be compared against non-existent file: "$golden"'); } final List<int> goldenBytes = await goldenFile.readAsBytes(); - return _areListsEqual(imageBytes, goldenBytes); + return _areListsEqual<int>(imageBytes, goldenBytes); } @override diff --git a/packages/flutter_test/lib/src/test_pointer.dart b/packages/flutter_test/lib/src/test_pointer.dart index 063440e13901ea5f110017fc343bcdadb80eb545..56f20968e2068b75d69591455ba4e1e274862924 100644 --- a/packages/flutter_test/lib/src/test_pointer.dart +++ b/packages/flutter_test/lib/src/test_pointer.dart @@ -142,7 +142,7 @@ class TestGesture { assert(hitTester != null); assert(dispatcher != null); TestGesture result; - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { // dispatch down event final HitTestResult hitTestResult = hitTester(downLocation); final TestPointer testPointer = TestPointer(pointer); @@ -170,7 +170,7 @@ class TestGesture { /// Send a move event moving the pointer to the given location. Future<Null> moveTo(Offset location, { Duration timeStamp = Duration.zero }) { - return TestAsyncUtils.guard(() { + return TestAsyncUtils.guard<Null>(() { assert(_pointer._isDown); return _dispatcher(_pointer.move(location, timeStamp: timeStamp), _result); }); @@ -180,7 +180,7 @@ class TestGesture { /// /// The object is no longer usable after this method has been called. Future<Null> up() { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { assert(_pointer._isDown); await _dispatcher(_pointer.up(), _result); assert(!_pointer._isDown); @@ -194,7 +194,7 @@ class TestGesture { /// /// The object is no longer usable after this method has been called. Future<Null> cancel() { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { assert(_pointer._isDown); await _dispatcher(_pointer.cancel(), _result); assert(!_pointer._isDown); diff --git a/packages/flutter_test/lib/src/widget_tester.dart b/packages/flutter_test/lib/src/widget_tester.dart index 4a766fc171c3ec202ce1af5fe9ad4e10b3147760..bcdee59e69933292eb7eb1356bfe9d0c09f31d34 100644 --- a/packages/flutter_test/lib/src/widget_tester.dart +++ b/packages/flutter_test/lib/src/widget_tester.dart @@ -221,7 +221,7 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker Duration duration, EnginePhase phase = EnginePhase.sendSemanticsUpdate, ]) { - return TestAsyncUtils.guard(() { + return TestAsyncUtils.guard<Null>(() { binding.attachRootWidget(widget); binding.scheduleFrame(); return binding.pump(duration, phase); @@ -244,7 +244,7 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker Duration duration, EnginePhase phase = EnginePhase.sendSemanticsUpdate, ]) { - return TestAsyncUtils.guard(() => binding.pump(duration, phase)); + return TestAsyncUtils.guard<Null>(() => binding.pump(duration, phase)); } /// Repeatedly calls [pump] with the given `duration` until there are no @@ -292,7 +292,7 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker return true; }()); int count = 0; - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { final DateTime endTime = binding.clock.fromNowBy(timeout); do { if (binding.clock.now().isAfter(endTime)) @@ -325,7 +325,7 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker /// [TestFailure] error being thrown. Future<T> runAsync<T>(Future<T> callback(), { Duration additionalTime = const Duration(milliseconds: 250), - }) => binding.runAsync(callback, additionalTime: additionalTime); + }) => binding.runAsync<T>(callback, additionalTime: additionalTime); /// Whether there are any any transient callbacks scheduled. /// @@ -351,7 +351,7 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker @override Future<Null> sendEventToBinding(PointerEvent event, HitTestResult result) { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { binding.dispatchEvent(event, result, source: TestBindingEventSource.test); return null; }); @@ -485,7 +485,7 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker /// Does not run timers. May result in an infinite loop or run out of memory /// if microtasks continue to recursively schedule new microtasks. Future<Null> idle() { - return TestAsyncUtils.guard(() => binding.idle()); + return TestAsyncUtils.guard<Null>(() => binding.idle()); } Set<Ticker> _tickers; @@ -570,8 +570,8 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker /// Tests that just need to add text to widgets like [TextField] /// or [TextFormField] only need to call [enterText]. Future<Null> showKeyboard(Finder finder) async { - return TestAsyncUtils.guard(() async { - final EditableTextState editable = state( + return TestAsyncUtils.guard<Null>(() async { + final EditableTextState editable = state<EditableTextState>( find.descendant( of: finder, matching: find.byType(EditableText), @@ -593,7 +593,7 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker /// To just give [finder] the focus without entering any text, /// see [showKeyboard]. Future<Null> enterText(Finder finder, String text) async { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<Null>(() async { await showKeyboard(finder); testTextInput.enterText(text); await idle(); @@ -605,7 +605,7 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker /// /// Will throw an error if there is no back button in the page. Future<void> pageBack() async { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<void>(() async { Finder backButton = find.byTooltip('Back'); if (backButton.evaluate().isEmpty) { backButton = find.byType(CupertinoNavigationBarBackButton); diff --git a/packages/flutter_test/test/goldens_test.dart b/packages/flutter_test/test/goldens_test.dart index 147ed2daea80c988c5aa47bacac6d3ebf661fb6c..0c084ad99c502f7ae2b35cfb3f24c514673e4926 100644 --- a/packages/flutter_test/test/goldens_test.dart +++ b/packages/flutter_test/test/goldens_test.dart @@ -34,7 +34,7 @@ void main() { void test(String description, FutureOr<void> body()) { test_package.test(description, () { - return io.IOOverrides.runZoned( + return io.IOOverrides.runZoned<FutureOr<void>>( body, createDirectory: (String path) => fs.directory(path), createFile: (String path) => fs.file(path), diff --git a/packages/flutter_test/test/widget_tester_test.dart b/packages/flutter_test/test/widget_tester_test.dart index ecb5ba050240236c1ec359212dbc43932c7d9595..924939826a52f0f8e2ff45a3e249caaf19353bff 100644 --- a/packages/flutter_test/test/widget_tester_test.dart +++ b/packages/flutter_test/test/widget_tester_test.dart @@ -24,7 +24,7 @@ void main() { final Completer<void> completer = Completer<void>(); final Future<void> future = expectLater(null, FakeMatcher(completer)); String value; - future.then((void _) { + future.then<void>((void _) { value = '123'; }); test_package.expect(value, isNull); @@ -39,7 +39,7 @@ void main() { final Completer<void> completer = Completer<void>(); final Future<void> future = expectLater(null, FakeMatcher(completer), skip: 'testing skip'); bool completed = false; - future.then((void _) { + future.then<void>((void _) { completed = true; }); test_package.expect(completed, isFalse); @@ -498,7 +498,7 @@ void main() { testWidgets('maintains existing zone values', (WidgetTester tester) async { final Object key = Object(); - await runZoned(() { + await runZoned<Future<void>>(() { expect(Zone.current[key], 'abczed'); return tester.runAsync<void>(() async { expect(Zone.current[key], 'abczed'); diff --git a/packages/flutter_tools/bin/fuchsia_asset_builder.dart b/packages/flutter_tools/bin/fuchsia_asset_builder.dart index e54702545a900bffc9e491a3bf237a063ea0f2a8..c659f846a50a4707274af52579430c45717061e6 100644 --- a/packages/flutter_tools/bin/fuchsia_asset_builder.dart +++ b/packages/flutter_tools/bin/fuchsia_asset_builder.dart @@ -77,7 +77,7 @@ Future<Null> run(List<String> args) async { final libfs.File outputFile = libfs.fs.file(libfs.fs.path.join(assetDir, fileName)); calls.add(writeFile(outputFile, content)); }); - await Future.wait(calls); + await Future.wait<Null>(calls); final String outputMan = argResults[_kOptionAssetManifestOut]; await writeFuchsiaManifest(assets, argResults[_kOptionAsset], outputMan, argResults[_kOptionComponentName]); diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart index 339544209bba7372459ffc39d6d63a53c324888f..9f9545b53f3204e5765f6f772a00f9221e8fec5f 100644 --- a/packages/flutter_tools/lib/src/android/android_device.dart +++ b/packages/flutter_tools/lib/src/android/android_device.dart @@ -474,7 +474,7 @@ class AndroidDevice extends Device { @override Future<bool> stopApp(ApplicationPackage app) { final List<String> command = adbCommandForDevice(<String>['shell', 'am', 'force-stop', app.id]); - return runCommandAndStreamOutput(command).then((int exitCode) => exitCode == 0); + return runCommandAndStreamOutput(command).then<bool>((int exitCode) => exitCode == 0); } @override @@ -673,8 +673,8 @@ class _AdbLogReader extends DeviceLogReader { runCommand(device.adbCommandForDevice(args)).then<Null>((Process process) { _process = process; const Utf8Decoder decoder = Utf8Decoder(allowMalformed: true); - _process.stdout.transform(decoder).transform(const LineSplitter()).listen(_onLine); - _process.stderr.transform(decoder).transform(const LineSplitter()).listen(_onLine); + _process.stdout.transform<String>(decoder).transform<String>(const LineSplitter()).listen(_onLine); + _process.stderr.transform<String>(decoder).transform<String>(const LineSplitter()).listen(_onLine); _process.exitCode.whenComplete(() { if (_linesController.hasListener) _linesController.close(); diff --git a/packages/flutter_tools/lib/src/android/android_emulator.dart b/packages/flutter_tools/lib/src/android/android_emulator.dart index d0ea02dd2311892ceb4a24b77cd2f499fb570424..6a0e24de693d8288c55c94737d4b748e0b334815 100644 --- a/packages/flutter_tools/lib/src/android/android_emulator.dart +++ b/packages/flutter_tools/lib/src/android/android_emulator.dart @@ -112,13 +112,13 @@ Map<String, String> parseIniLines(List<String> contents) { final Map<String, String> results = <String, String>{}; final Iterable<List<String>> properties = contents - .map((String l) => l.trim()) + .map<String>((String l) => l.trim()) // Strip blank lines/comments .where((String l) => l != '' && !l.startsWith('#')) // Discard anything that isn't simple name=value .where((String l) => l.contains('=')) // Split into name/value - .map((String l) => l.split('=')); + .map<List<String>>((String l) => l.split('=')); for (List<String> property in properties) { results[property[0].trim()] = property[1].trim(); diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart index 72344d2b34bccea71780ca786c0fffaa456a7e79..4c9ea22918639d7a23b6811077e7bde009d7fbc1 100644 --- a/packages/flutter_tools/lib/src/android/android_sdk.dart +++ b/packages/flutter_tools/lib/src/android/android_sdk.dart @@ -382,7 +382,7 @@ class AndroidSdk { } // Match up platforms with the best corresponding build-tools. - _sdkVersions = platforms.map((Directory platformDir) { + _sdkVersions = platforms.map<AndroidSdkVersion>((Directory platformDir) { final String platformName = platformDir.basename; int platformVersion; @@ -394,7 +394,7 @@ class AndroidSdk { final String buildProps = platformDir.childFile('build.prop').readAsStringSync(); final String versionString = const LineSplitter() .convert(buildProps) - .map(_sdkVersionRe.firstMatch) + .map<Match>(_sdkVersionRe.firstMatch) .firstWhere((Match match) => match != null) .group(1); platformVersion = int.parse(versionString); diff --git a/packages/flutter_tools/lib/src/android/android_studio.dart b/packages/flutter_tools/lib/src/android/android_studio.dart index 9b416d7f36af9fe8ab7984595315df04ca3d6f06..4c3dc986960fe758f4e1d2c8ee33f6df57341480 100644 --- a/packages/flutter_tools/lib/src/android/android_studio.dart +++ b/packages/flutter_tools/lib/src/android/android_studio.dart @@ -188,7 +188,7 @@ class AndroidStudio implements Comparable<AndroidStudio> { } return candidatePaths - .map((FileSystemEntity e) => AndroidStudio.fromMacOSBundle(e.path)) + .map<AndroidStudio>((FileSystemEntity e) => AndroidStudio.fromMacOSBundle(e.path)) .where((AndroidStudio s) => s != null) .toList(); } diff --git a/packages/flutter_tools/lib/src/android/android_studio_validator.dart b/packages/flutter_tools/lib/src/android/android_studio_validator.dart index fd59e4c392cb23d962ad4f0e7385e20f9607f258..3302e9430921392bd7046162e090a386aa4f0fbd 100644 --- a/packages/flutter_tools/lib/src/android/android_studio_validator.dart +++ b/packages/flutter_tools/lib/src/android/android_studio_validator.dart @@ -22,7 +22,7 @@ class AndroidStudioValidator extends DoctorValidator { validators.add(NoAndroidStudioValidator()); } else { validators.addAll(studios - .map((AndroidStudio studio) => AndroidStudioValidator(studio))); + .map<DoctorValidator>((AndroidStudio studio) => AndroidStudioValidator(studio))); } return validators; } @@ -46,11 +46,11 @@ class AndroidStudioValidator extends DoctorValidator { if (_studio.isValid) { type = ValidationType.installed; messages.addAll(_studio.validationMessages - .map((String m) => ValidationMessage(m))); + .map<ValidationMessage>((String m) => ValidationMessage(m))); } else { type = ValidationType.partial; messages.addAll(_studio.validationMessages - .map((String m) => ValidationMessage.error(m))); + .map<ValidationMessage>((String m) => ValidationMessage.error(m))); messages.add(ValidationMessage( 'Try updating or re-installing Android Studio.')); if (_studio.configured != null) { diff --git a/packages/flutter_tools/lib/src/android/android_workflow.dart b/packages/flutter_tools/lib/src/android/android_workflow.dart index d3e428554f14486e2d727c43246f923d85f0908b..2a532a0c28b9b0233c1cdc7172db39689c1752cb 100644 --- a/packages/flutter_tools/lib/src/android/android_workflow.dart +++ b/packages/flutter_tools/lib/src/android/android_workflow.dart @@ -127,7 +127,7 @@ class AndroidValidator extends DoctorValidator { if (validationResult.isNotEmpty) { // Android SDK is not functional. - messages.addAll(validationResult.map((String message) { + messages.addAll(validationResult.map<ValidationMessage>((String message) { return ValidationMessage.error(message); })); messages.add(ValidationMessage( @@ -200,13 +200,13 @@ class AndroidValidator extends DoctorValidator { ); process.stdin.write('n\n'); final Future<void> output = process.stdout - .transform(const Utf8Decoder(allowMalformed: true)) - .transform(const LineSplitter()) + .transform<String>(const Utf8Decoder(allowMalformed: true)) + .transform<String>(const LineSplitter()) .listen(_onLine) .asFuture<void>(null); final Future<void> errors = process.stderr - .transform(const Utf8Decoder(allowMalformed: true)) - .transform(const LineSplitter()) + .transform<String>(const Utf8Decoder(allowMalformed: true)) + .transform<String>(const LineSplitter()) .listen(_onLine) .asFuture<void>(null); try { diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart index 22b7b2465c907f0b07c58d4dceb0d782a474edae..5052e5de1fb8f55716f45cb798080e451ffe148b 100644 --- a/packages/flutter_tools/lib/src/asset.dart +++ b/packages/flutter_tools/lib/src/asset.dart @@ -354,7 +354,7 @@ Future<DevFSContent> _obtainLicenses( printStatus(allPackagesList.join(', ')); } - final List<String> combinedLicensesList = packageLicenses.keys.map( + final List<String> combinedLicensesList = packageLicenses.keys.map<String>( (String license) { final List<String> packageNames = packageLicenses[license].toList() ..sort(); @@ -444,7 +444,7 @@ List<Font> _parsePackageFonts( } List<Map<String, dynamic>> _createFontsDescriptor(List<Font> fonts) { - return fonts.map((Font font) => font.descriptor).toList(); + return fonts.map<Map<String, dynamic>>((Font font) => font.descriptor).toList(); } // Given an assets directory like this: diff --git a/packages/flutter_tools/lib/src/base/fingerprint.dart b/packages/flutter_tools/lib/src/base/fingerprint.dart index fed1cbf804ac6c96ea4a0eb2532e4e97fb227507..b898ed7c1b4e0923d55ab5a2dc5b4afed16dcf60 100644 --- a/packages/flutter_tools/lib/src/base/fingerprint.dart +++ b/packages/flutter_tools/lib/src/base/fingerprint.dart @@ -97,7 +97,7 @@ class Fingerprinter { /// See [Fingerprinter]. class Fingerprint { Fingerprint.fromBuildInputs(Map<String, String> properties, Iterable<String> inputPaths) { - final Iterable<File> files = inputPaths.map(fs.file); + final Iterable<File> files = inputPaths.map<File>(fs.file); final Iterable<File> missingInputs = files.where((File file) => !file.existsSync()); if (missingInputs.isNotEmpty) throw ArgumentError('Missing input files:\n' + missingInputs.join('\n')); @@ -179,7 +179,7 @@ Future<Set<String>> readDepfile(String depfilePath) async { return dependencies .replaceAllMapped(_separatorExpr, (Match match) => '${match.group(1)}\n') .split('\n') - .map((String path) => path.replaceAllMapped(_escapeExpr, (Match match) => match.group(1)).trim()) + .map<String>((String path) => path.replaceAllMapped(_escapeExpr, (Match match) => match.group(1)).trim()) .where((String path) => path.isNotEmpty) .toSet(); } diff --git a/packages/flutter_tools/lib/src/base/io.dart b/packages/flutter_tools/lib/src/base/io.dart index fb9be5148140fd3a5bdfbd5e19afa39ef4a558d1..70ca4fe966519cfa0f372a46712bdea4c84b038e 100644 --- a/packages/flutter_tools/lib/src/base/io.dart +++ b/packages/flutter_tools/lib/src/base/io.dart @@ -127,7 +127,7 @@ class ProcessSignal implements io.ProcessSignal { @override Stream<ProcessSignal> watch() { - return _delegate.watch().map((io.ProcessSignal signal) => this); + return _delegate.watch().map<ProcessSignal>((io.ProcessSignal signal) => this); } @override diff --git a/packages/flutter_tools/lib/src/base/logger.dart b/packages/flutter_tools/lib/src/base/logger.dart index de9eabf9791251aeb1e31661c9790536df42107d..dd6f0a1d96df9f9ca2e0f3d53b72449e5376d17f 100644 --- a/packages/flutter_tools/lib/src/base/logger.dart +++ b/packages/flutter_tools/lib/src/base/logger.dart @@ -112,7 +112,7 @@ class StdoutLogger extends Logger { message = terminal.color(message, color); if (indent != null && indent > 0) { message = LineSplitter.split(message) - .map((String line) => ' ' * indent + line) + .map<String>((String line) => ' ' * indent + line) .join('\n'); } if (newline != false) diff --git a/packages/flutter_tools/lib/src/base/os.dart b/packages/flutter_tools/lib/src/base/os.dart index 8c3b30dd696fac1a6289797c44499eb1db33a4d8..54f5964146208348e49b8dcdb8bf85956d132974 100644 --- a/packages/flutter_tools/lib/src/base/os.dart +++ b/packages/flutter_tools/lib/src/base/os.dart @@ -92,7 +92,7 @@ class _PosixUtils extends OperatingSystemUtils { if (result.exitCode != 0) return const <File>[]; final String stdout = result.stdout; - return stdout.trim().split('\n').map((String path) => fs.file(path.trim())).toList(); + return stdout.trim().split('\n').map<File>((String path) => fs.file(path.trim())).toList(); } @override @@ -166,7 +166,7 @@ class _WindowsUtils extends OperatingSystemUtils { return const <File>[]; final List<String> lines = result.stdout.trim().split('\n'); if (all) - return lines.map((String path) => fs.file(path.trim())).toList(); + return lines.map<File>((String path) => fs.file(path.trim())).toList(); return <File>[fs.file(lines.first.trim())]; } diff --git a/packages/flutter_tools/lib/src/base/process.dart b/packages/flutter_tools/lib/src/base/process.dart index caf6349f814c57ac06deaeb23f8fb57e65ef5887..29029d4cebc3bd344088fe57d9d319bdddaea6f0 100644 --- a/packages/flutter_tools/lib/src/base/process.dart +++ b/packages/flutter_tools/lib/src/base/process.dart @@ -137,8 +137,8 @@ Future<int> runCommandAndStreamOutput(List<String> cmd, { environment: environment ); final StreamSubscription<String> stdoutSubscription = process.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .where((String line) => filter == null ? true : filter.hasMatch(line)) .listen((String line) { if (mapFunction != null) @@ -152,8 +152,8 @@ Future<int> runCommandAndStreamOutput(List<String> cmd, { } }); final StreamSubscription<String> stderrSubscription = process.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .where((String line) => filter == null ? true : filter.hasMatch(line)) .listen((String line) { if (mapFunction != null) diff --git a/packages/flutter_tools/lib/src/base/terminal.dart b/packages/flutter_tools/lib/src/base/terminal.dart index 8e40c59a7799cd368917a19485f0f536a5a97193..65a5a466bf295b0b780c3d30401b42e4584bfa17 100644 --- a/packages/flutter_tools/lib/src/base/terminal.dart +++ b/packages/flutter_tools/lib/src/base/terminal.dart @@ -107,7 +107,7 @@ class AnsiTerminal { /// /// Useful when the console is in [singleCharMode]. Stream<String> get onCharInput { - _broadcastStdInString ??= io.stdin.transform(const AsciiDecoder(allowInvalid: true)).asBroadcastStream(); + _broadcastStdInString ??= io.stdin.transform<String>(const AsciiDecoder(allowInvalid: true)).asBroadcastStream(); return _broadcastStdInString; } diff --git a/packages/flutter_tools/lib/src/base/utils.dart b/packages/flutter_tools/lib/src/base/utils.dart index 102a0ec5ad165dfd2bbbef85798fbc289bc814a6..ee485de5a5a034900fb8336ca4fa05144a81b8ab 100644 --- a/packages/flutter_tools/lib/src/base/utils.dart +++ b/packages/flutter_tools/lib/src/base/utils.dart @@ -202,7 +202,7 @@ class SettingsFile { final Map<String, String> values = <String, String>{}; void writeContents(File file) { - file.writeAsStringSync(values.keys.map((String key) { + file.writeAsStringSync(values.keys.map<String>((String key) { return '$key=${values[key]}'; }).join('\n')); } diff --git a/packages/flutter_tools/lib/src/bundle.dart b/packages/flutter_tools/lib/src/bundle.dart index db1b56945e515a7cbd12587a550328fa2d0648a4..4a531b29fe759b650404d9a1012ba6bc084c40b9 100644 --- a/packages/flutter_tools/lib/src/bundle.dart +++ b/packages/flutter_tools/lib/src/bundle.dart @@ -193,8 +193,8 @@ Future<void> writeBundle( bundleDir.deleteSync(recursive: true); bundleDir.createSync(recursive: true); - await Future.wait( - assetEntries.entries.map((MapEntry<String, DevFSContent> entry) async { + await Future.wait<void>( + assetEntries.entries.map<Future<void>>((MapEntry<String, DevFSContent> entry) async { final File file = fs.file(fs.path.join(bundleDir.path, entry.key)); file.parent.createSync(recursive: true); await file.writeAsBytes(await entry.value.contentsAsBytes()); diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart index 8e2325c73e3080a65a0a9cc586a43cb7b3a09f21..8ab311c5ed18c97334d8175ebcba33eaf4bebaa2 100644 --- a/packages/flutter_tools/lib/src/cache.dart +++ b/packages/flutter_tools/lib/src/cache.dart @@ -560,7 +560,7 @@ String _flattenNameNoSubdirs(String fileName) { @visibleForTesting String flattenNameSubdirs(Uri url) { final List<String> pieces = <String>[url.host]..addAll(url.pathSegments); - final Iterable<String> convertedPieces = pieces.map(_flattenNameNoSubdirs); + final Iterable<String> convertedPieces = pieces.map<String>(_flattenNameNoSubdirs); return fs.path.joinAll(convertedPieces); } diff --git a/packages/flutter_tools/lib/src/commands/analyze_once.dart b/packages/flutter_tools/lib/src/commands/analyze_once.dart index ae14c97679b5f5e11e47bf101d6cc691e529cdd3..3d181ad58fb5b779efb7b7c4f68916a08c7acdf9 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_once.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_once.dart @@ -92,7 +92,7 @@ class AnalyzeOnce extends AnalyzeBase { await server.start(); // Completing the future in the callback can't fail. - server.onExit.then((int exitCode) { // ignore: unawaited_futures + server.onExit.then<void>((int exitCode) { // ignore: unawaited_futures if (!analysisCompleter.isCompleted) { analysisCompleter.completeError('analysis server exited: $exitCode'); } diff --git a/packages/flutter_tools/lib/src/commands/build_aot.dart b/packages/flutter_tools/lib/src/commands/build_aot.dart index fb07c2311c0bb6026e2299b6f18844ce861f60ed..dc5a79fafed8f2ff51eca5c3a901f47b73650cca 100644 --- a/packages/flutter_tools/lib/src/commands/build_aot.dart +++ b/packages/flutter_tools/lib/src/commands/build_aot.dart @@ -35,8 +35,8 @@ class BuildAotCommand extends BuildSubCommand { ) ..addMultiOption('ios-arch', splitCommas: true, - defaultsTo: defaultIOSArchs.map(getNameForIOSArch), - allowed: IOSArch.values.map(getNameForIOSArch), + defaultsTo: defaultIOSArchs.map<String>(getNameForIOSArch), + allowed: IOSArch.values.map<String>(getNameForIOSArch), help: 'iOS architectures to build.', ) ..addMultiOption(FlutterOptions.kExtraFrontEndOptions, @@ -112,14 +112,14 @@ class BuildAotCommand extends BuildSubCommand { outputPath: outputPath, buildSharedLibrary: false, extraGenSnapshotOptions: argResults[FlutterOptions.kExtraGenSnapshotOptions], - ).then((int buildExitCode) { + ).then<int>((int buildExitCode) { return buildExitCode; }); }); // Merge arch-specific App.frameworks into a multi-arch App.framework. - if ((await Future.wait(exitCodes.values)).every((int buildExitCode) => buildExitCode == 0)) { - final Iterable<String> dylibs = iosBuilds.values.map((String outputDir) => fs.path.join(outputDir, 'App.framework', 'App')); + if ((await Future.wait<int>(exitCodes.values)).every((int buildExitCode) => buildExitCode == 0)) { + final Iterable<String> dylibs = iosBuilds.values.map<String>((String outputDir) => fs.path.join(outputDir, 'App.framework', 'App')); fs.directory(fs.path.join(outputPath, 'App.framework'))..createSync(); await runCheckedAsync(<String>['lipo'] ..addAll(dylibs) diff --git a/packages/flutter_tools/lib/src/commands/config.dart b/packages/flutter_tools/lib/src/commands/config.dart index a69655e592ada6e3f74f5b351d7d73b4dcd2bfe2..2d60e8a0b5583928f65e8c5bb382d5b4af4f68cf 100644 --- a/packages/flutter_tools/lib/src/commands/config.dart +++ b/packages/flutter_tools/lib/src/commands/config.dart @@ -47,7 +47,7 @@ class ConfigCommand extends FlutterCommand { @override String get usageFooter { // List all config settings. - String values = config.keys.map((String key) { + String values = config.keys.map<String>((String key) { return ' $key: ${config.getValue(key)}'; }).join('\n'); if (values.isNotEmpty) diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart index 6189f2c3ec97d69e874ac5e856dbd05787b576f3..18d38bcd626c00250285e5668ec8be803e2d66e2 100644 --- a/packages/flutter_tools/lib/src/commands/daemon.dart +++ b/packages/flutter_tools/lib/src/commands/daemon.dart @@ -603,7 +603,7 @@ class DeviceDomain extends Domain { _DeviceEventHandler _onDeviceEvent(String eventName) { return (Device device) { - _serializeDeviceEvents = _serializeDeviceEvents.then((_) async { + _serializeDeviceEvents = _serializeDeviceEvents.then<Null>((_) async { sendEvent(eventName, await _deviceToMap(device)); }); }; @@ -679,10 +679,10 @@ class DeviceDomain extends Domain { } Stream<Map<String, dynamic>> get stdinCommandStream => stdin - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .where((String line) => line.startsWith('[{') && line.endsWith('}]')) - .map((String line) { + .map<Map<String, dynamic>>((String line) { line = line.substring(1, line.length - 1); return json.decode(line); }); @@ -829,7 +829,7 @@ class EmulatorDomain extends Domain { Future<List<Map<String, dynamic>>> getEmulators([Map<String, dynamic> args]) async { final List<Emulator> list = await emulators.getAllAvailableEmulators(); - return list.map(_emulatorToMap).toList(); + return list.map<Map<String, dynamic>>(_emulatorToMap).toList(); } Future<Null> launch(Map<String, dynamic> args) async { diff --git a/packages/flutter_tools/lib/src/commands/drive.dart b/packages/flutter_tools/lib/src/commands/drive.dart index 419371a42387f6f2b22b7f20b6d4ea836c58240c..dcccb09e80b7968ee8714b6a9e7f67d2b201bc58 100644 --- a/packages/flutter_tools/lib/src/commands/drive.dart +++ b/packages/flutter_tools/lib/src/commands/drive.dart @@ -206,7 +206,7 @@ Future<Device> findTargetDevice() async { return null; } else if (devices.length > 1) { printStatus('Found multiple connected devices:'); - printStatus(devices.map((Device d) => ' - ${d.name}\n').join('')); + printStatus(devices.map<String>((Device d) => ' - ${d.name}\n').join('')); } printStatus('Using device ${devices.first.name}.'); return devices.first; diff --git a/packages/flutter_tools/lib/src/commands/fuchsia_reload.dart b/packages/flutter_tools/lib/src/commands/fuchsia_reload.dart index fab29884a7c994b0d0c5e9cee2ec32cad402a077..3979beb967d20ecc035cc4be86afce04ea637ad0 100644 --- a/packages/flutter_tools/lib/src/commands/fuchsia_reload.dart +++ b/packages/flutter_tools/lib/src/commands/fuchsia_reload.dart @@ -120,7 +120,7 @@ class FuchsiaReloadCommand extends FlutterCommand { // Wrap everything in try/finally to make sure we kill the ssh processes // doing the port forwarding. try { - final List<int> servicePorts = forwardedPorts.map( + final List<int> servicePorts = forwardedPorts.map<int>( (_PortForwarder pf) => pf.port).toList(); if (_list) { @@ -145,10 +145,10 @@ class FuchsiaReloadCommand extends FlutterCommand { // Set up a device and hot runner and attach the hot runner to the first // vm service we found. - final List<String> fullAddresses = targetPorts.map( + final List<String> fullAddresses = targetPorts.map<String>( (int p) => '$ipv4Loopback:$p' ).toList(); - final List<Uri> observatoryUris = fullAddresses.map( + final List<Uri> observatoryUris = fullAddresses.map<Uri>( (String a) => Uri.parse('http://$a') ).toList(); final FuchsiaDevice device = FuchsiaDevice( @@ -168,7 +168,7 @@ class FuchsiaReloadCommand extends FlutterCommand { printStatus('Connecting to $_modName'); await hotRunner.attach(viewFilter: isolateName); } finally { - await Future.wait(forwardedPorts.map((_PortForwarder pf) => pf.stop())); + await Future.wait<Null>(forwardedPorts.map<Future<Null>>((_PortForwarder pf) => pf.stop())); } } @@ -474,11 +474,11 @@ class _PortForwarder { printTrace("_PortForwarder running '${command.join(' ')}'"); final Process process = await processManager.start(command); process.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String data) { printTrace(data); }); // Best effort to print the exit code. - process.exitCode.then((int c) { // ignore: unawaited_futures + process.exitCode.then<void>((int c) { // ignore: unawaited_futures printTrace("'${command.join(' ')}' exited with exit code $c"); }); printTrace('Set up forwarding from $localPort to $address:$remotePort'); diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index 1f3bbc77620a321b9ea7440d66ae2a776ee23470..36efd98b7811e7a6952d1108e39bdee0db9bff5d 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart @@ -344,7 +344,7 @@ class RunCommand extends RunCommandBase { fs.file(pidFile).writeAsStringSync(pid.toString()); } - final List<FlutterDevice> flutterDevices = devices.map((Device device) { + final List<FlutterDevice> flutterDevices = devices.map<FlutterDevice>((Device device) { return FlutterDevice( device, trackWidgetCreation: argResults['track-widget-creation'], @@ -392,7 +392,7 @@ class RunCommand extends RunCommandBase { // Do not add more operations to the future. final Completer<void> appStartedTimeRecorder = Completer<void>.sync(); // This callback can't throw. - appStartedTimeRecorder.future.then( // ignore: unawaited_futures + appStartedTimeRecorder.future.then<void>( // ignore: unawaited_futures (_) { appStartedTime = clock.now(); } ); diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart index c2b0352b037e97a9be4897f8824588f1db97fd6a..26c239a96382aa609e88459cd1f3e9d129d86f38 100644 --- a/packages/flutter_tools/lib/src/compile.dart +++ b/packages/flutter_tools/lib/src/compile.dart @@ -179,11 +179,11 @@ class KernelCompiler { final _StdoutHandler _stdoutHandler = _StdoutHandler(); server.stderr - .transform(utf8.decoder) + .transform<String>(utf8.decoder) .listen((String message) { printError(message); }); server.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen(_stdoutHandler.handler); final int exitCode = await server.exitCode; if (exitCode == 0) { @@ -372,8 +372,8 @@ class ResidentCompiler { printTrace(command.join(' ')); _server = await processManager.start(command); _server.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen( _stdoutHandler.handler, onDone: () { @@ -385,8 +385,8 @@ class ResidentCompiler { }); _server.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String message) { printError(message); }); _server.stdin.writeln('compile $scriptFilename'); diff --git a/packages/flutter_tools/lib/src/dart/analysis.dart b/packages/flutter_tools/lib/src/dart/analysis.dart index 0815190fe1a75dda0fde7432ca27ea0efedd1ea9..481e4cb66c26b9ddb2cdeede40f8273a2dc56d35 100644 --- a/packages/flutter_tools/lib/src/dart/analysis.dart +++ b/packages/flutter_tools/lib/src/dart/analysis.dart @@ -43,11 +43,11 @@ class AnalysisServer { _process.exitCode.whenComplete(() => _process = null); // ignore: unawaited_futures final Stream<String> errorStream = - _process.stderr.transform(utf8.decoder).transform(const LineSplitter()); + _process.stderr.transform<String>(utf8.decoder).transform<String>(const LineSplitter()); errorStream.listen(printError); final Stream<String> inStream = - _process.stdout.transform(utf8.decoder).transform(const LineSplitter()); + _process.stdout.transform<String>(utf8.decoder).transform<String>(const LineSplitter()); inStream.listen(_handleServerResponse); // Available options (many of these are obsolete): diff --git a/packages/flutter_tools/lib/src/devfs.dart b/packages/flutter_tools/lib/src/devfs.dart index 0594742d7f113e1d0eaf9e8a94b2e1614245fcd6..3dd881943cc4b95a86f7993d3e8f40917e81f10e 100644 --- a/packages/flutter_tools/lib/src/devfs.dart +++ b/packages/flutter_tools/lib/src/devfs.dart @@ -47,7 +47,7 @@ abstract class DevFSContent { Stream<List<int>> contentsAsStream(); Stream<List<int>> contentsAsCompressedStream() { - return contentsAsStream().transform(gzip.encoder); + return contentsAsStream().transform<List<int>>(gzip.encoder); } /// Return the list of files this content depends on. @@ -445,7 +445,7 @@ class DevFS { if (!content._exists) { final Future<Map<String, dynamic>> operation = _operations.deleteFile(fsName, deviceUri) - .then((dynamic v) => v?.cast<String,dynamic>()); + .then<Map<String, dynamic>>((dynamic v) => v?.cast<String,dynamic>()); if (operation != null) _pendingOperations.add(operation); toRemove.add(deviceUri); @@ -458,7 +458,7 @@ class DevFS { if (toRemove.isNotEmpty) { printTrace('Removing deleted files'); toRemove.forEach(_entries.remove); - await Future.wait(_pendingOperations); + await Future.wait<Map<String, dynamic>>(_pendingOperations); _pendingOperations.clear(); } @@ -542,11 +542,11 @@ class DevFS { dirtyEntries.forEach((Uri deviceUri, DevFSContent content) { final Future<Map<String, dynamic>> operation = _operations.writeFile(fsName, deviceUri, content) - .then((dynamic v) => v?.cast<String, dynamic>()); + .then<Map<String, dynamic>>((dynamic v) => v?.cast<String, dynamic>()); if (operation != null) _pendingOperations.add(operation); }); - await Future.wait(_pendingOperations, eagerError: true); + await Future.wait<Map<String, dynamic>>(_pendingOperations, eagerError: true); _pendingOperations.clear(); } } diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart index 61ff0ab604721919fa0e579e8afd575610261095..29f5c272e695ca0f69c557f64971da369c16d0f8 100644 --- a/packages/flutter_tools/lib/src/device.dart +++ b/packages/flutter_tools/lib/src/device.dart @@ -315,14 +315,14 @@ abstract class Device { // Calculate column widths final List<int> indices = List<int>.generate(table[0].length - 1, (int i) => i); - List<int> widths = indices.map((int i) => 0).toList(); + List<int> widths = indices.map<int>((int i) => 0).toList(); for (List<String> row in table) { - widths = indices.map((int i) => math.max(widths[i], row[i].length)).toList(); + widths = indices.map<int>((int i) => math.max(widths[i], row[i].length)).toList(); } // Join columns into lines of text for (List<String> row in table) { - yield indices.map((int i) => row[i].padRight(widths[i])).join(' • ') + ' • ${row.last}'; + yield indices.map<String>((int i) => row[i].padRight(widths[i])).join(' • ') + ' • ${row.last}'; } } diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart index 1c625b418122ad15cb2cb3080c457740e5778e6b..d0fcf2f693821c105fbd47dd5a2651b375d3e29e 100644 --- a/packages/flutter_tools/lib/src/doctor.dart +++ b/packages/flutter_tools/lib/src/doctor.dart @@ -569,9 +569,9 @@ class IntelliJValidatorOnMac extends IntelliJValidator { try { final Iterable<Directory> installDirs = installPaths - .map((String installPath) => fs.directory(installPath)) - .map((Directory dir) => dir.existsSync() ? dir.listSync() : <FileSystemEntity>[]) - .expand((List<FileSystemEntity> mappedDirs) => mappedDirs) + .map<Directory>((String installPath) => fs.directory(installPath)) + .map<List<FileSystemEntity>>((Directory dir) => dir.existsSync() ? dir.listSync() : <FileSystemEntity>[]) + .expand<FileSystemEntity>((List<FileSystemEntity> mappedDirs) => mappedDirs) .whereType<Directory>(); for (Directory dir in installDirs) { checkForIntelliJ(dir); @@ -626,13 +626,13 @@ class DeviceValidator extends DoctorValidator { if (devices.isEmpty) { final List<String> diagnostics = await deviceManager.getDeviceDiagnostics(); if (diagnostics.isNotEmpty) { - messages = diagnostics.map((String message) => ValidationMessage(message)).toList(); + messages = diagnostics.map<ValidationMessage>((String message) => ValidationMessage(message)).toList(); } else { messages = <ValidationMessage>[ValidationMessage.hint('No devices available')]; } } else { messages = await Device.descriptions(devices) - .map((String msg) => ValidationMessage(msg)).toList(); + .map<ValidationMessage>((String msg) => ValidationMessage(msg)).toList(); } if (devices.isEmpty) { diff --git a/packages/flutter_tools/lib/src/emulator.dart b/packages/flutter_tools/lib/src/emulator.dart index c40497c77afb428e4e3cfad1762f2804bbf25f91..42e63fe3033978463ba67120fa546130ae2a18e8 100644 --- a/packages/flutter_tools/lib/src/emulator.dart +++ b/packages/flutter_tools/lib/src/emulator.dart @@ -54,7 +54,7 @@ class EmulatorManager { /// Return the list of all available emulators. Future<List<Emulator>> getAllAvailableEmulators() async { final List<Emulator> emulators = <Emulator>[]; - await Future.forEach(_platformDiscoverers, (EmulatorDiscovery discoverer) async { + await Future.forEach<EmulatorDiscovery>(_platformDiscoverers, (EmulatorDiscovery discoverer) async { emulators.addAll(await discoverer.emulators); }); return emulators; @@ -69,7 +69,7 @@ class EmulatorManager { // so we can keep adding suffixes until we miss. final List<Emulator> all = await getAllAvailableEmulators(); final Set<String> takenNames = all - .map((Emulator e) => e.id) + .map<String>((Emulator e) => e.id) .where((String id) => id.startsWith(autoName)) .toSet(); int suffix = 1; @@ -176,8 +176,8 @@ class EmulatorManager { .toList(); final List<int> availableApiVersions = availableIDs - .map((String id) => androidApiVersion.firstMatch(id).group(1)) - .map((String apiVersion) => int.parse(apiVersion)) + .map<String>((String id) => androidApiVersion.firstMatch(id).group(1)) + .map<int>((String apiVersion) => int.parse(apiVersion)) .toList(); // Get the highest Android API version or whats left @@ -253,21 +253,21 @@ abstract class Emulator { // Calculate column widths final List<int> indices = List<int>.generate(table[0].length - 1, (int i) => i); - List<int> widths = indices.map((int i) => 0).toList(); + List<int> widths = indices.map<int>((int i) => 0).toList(); for (List<String> row in table) { - widths = indices.map((int i) => math.max(widths[i], row[i].length)).toList(); + widths = indices.map<int>((int i) => math.max(widths[i], row[i].length)).toList(); } // Join columns into lines of text final RegExp whiteSpaceAndDots = RegExp(r'[•\s]+$'); return table - .map((List<String> row) { + .map<String>((List<String> row) { return indices - .map((int i) => row[i].padRight(widths[i])) + .map<String>((int i) => row[i].padRight(widths[i])) .join(' • ') + ' • ${row.last}'; }) - .map((String line) => line.replaceAll(whiteSpaceAndDots, '')) + .map<String>((String line) => line.replaceAll(whiteSpaceAndDots, '')) .toList(); } diff --git a/packages/flutter_tools/lib/src/flutter_manifest.dart b/packages/flutter_tools/lib/src/flutter_manifest.dart index 9e937f4ffcbe7912922c71faa484519584e502d5..6fa8efb4950dfc12256fdafb201bcf5598278346 100644 --- a/packages/flutter_tools/lib/src/flutter_manifest.dart +++ b/packages/flutter_tools/lib/src/flutter_manifest.dart @@ -224,7 +224,7 @@ class Font { Map<String, dynamic> get descriptor { return <String, dynamic>{ 'family': familyName, - 'fonts': fontAssets.map((FontAsset a) => a.descriptor).toList(), + 'fonts': fontAssets.map<Map<String, dynamic>>((FontAsset a) => a.descriptor).toList(), }; } diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart index 111b654153a650abb61ff3562d3696387dd73861..d9f4e2677ca61593296e2ff72328ea5504ba8980 100644 --- a/packages/flutter_tools/lib/src/ios/devices.dart +++ b/packages/flutter_tools/lib/src/ios/devices.dart @@ -477,8 +477,8 @@ class _IOSDeviceLogReader extends DeviceLogReader { void _start() { iMobileDevice.startLogger().then<Null>((Process process) { _process = process; - _process.stdout.transform(utf8.decoder).transform(const LineSplitter()).listen(_newLineHandler()); - _process.stderr.transform(utf8.decoder).transform(const LineSplitter()).listen(_newLineHandler()); + _process.stdout.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).listen(_newLineHandler()); + _process.stderr.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).listen(_newLineHandler()); _process.exitCode.whenComplete(() { if (_linesController.hasListener) _linesController.close(); diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart index d86bf9ba2b2d25ee5c59480e520a7a99c74cb671..d77a41de65896aebd2e2036c680c1baf78fd0869 100644 --- a/packages/flutter_tools/lib/src/ios/mac.dart +++ b/packages/flutter_tools/lib/src/ios/mac.dart @@ -662,7 +662,7 @@ Future<Null> _copyServiceFrameworks(List<Map<String, String>> services, Director void _copyServiceDefinitionsManifest(List<Map<String, String>> services, File manifest) { printTrace("Creating service definitions manifest at '${manifest.path}'"); - final List<Map<String, String>> jsonServices = services.map((Map<String, String> service) => <String, String>{ + final List<Map<String, String>> jsonServices = services.map<Map<String, String>>((Map<String, String> service) => <String, String>{ 'name': service['name'], // Since we have already moved it to the Frameworks directory. Strip away // the directory and basenames. diff --git a/packages/flutter_tools/lib/src/ios/simulators.dart b/packages/flutter_tools/lib/src/ios/simulators.dart index e4ba8301ed2a803388e5d1fad2ce92ac8778c8d6..77dd9d46636cf62ebd373f7db10c3c62c3ccafa7 100644 --- a/packages/flutter_tools/lib/src/ios/simulators.dart +++ b/packages/flutter_tools/lib/src/ios/simulators.dart @@ -46,7 +46,7 @@ class IOSSimulatorUtils { if (!xcode.isInstalledAndMeetsVersionCheck) return <IOSSimulator>[]; - return SimControl.instance.getConnectedDevices().map((SimDevice device) { + return SimControl.instance.getConnectedDevices().map<IOSSimulator>((SimDevice device) { return IOSSimulator(device.udid, name: device.name, category: device.category); }).toList(); } @@ -339,7 +339,7 @@ class IOSSimulator extends Device { } Future<bool> _applicationIsInstalledAndRunning(ApplicationPackage app) async { - final List<bool> criteria = await Future.wait(<Future<bool>>[ + final List<bool> criteria = await Future.wait<bool>(<Future<bool>>[ isAppInstalled(app), exitsHappyAsync(<String>['/usr/bin/killall', 'Runner']), ]); @@ -510,15 +510,15 @@ class _IOSSimulatorLogReader extends DeviceLogReader { // Device log. await device.ensureLogsExists(); _deviceProcess = await launchDeviceLogTool(device); - _deviceProcess.stdout.transform(utf8.decoder).transform(const LineSplitter()).listen(_onDeviceLine); - _deviceProcess.stderr.transform(utf8.decoder).transform(const LineSplitter()).listen(_onDeviceLine); + _deviceProcess.stdout.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).listen(_onDeviceLine); + _deviceProcess.stderr.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).listen(_onDeviceLine); // Track system.log crashes. // ReportCrash[37965]: Saved crash report for FlutterRunner[37941]... _systemProcess = await launchSystemLogTool(device); if (_systemProcess != null) { - _systemProcess.stdout.transform(utf8.decoder).transform(const LineSplitter()).listen(_onSystemLine); - _systemProcess.stderr.transform(utf8.decoder).transform(const LineSplitter()).listen(_onSystemLine); + _systemProcess.stdout.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).listen(_onSystemLine); + _systemProcess.stderr.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).listen(_onSystemLine); } // We don't want to wait for the process or its callback. Best effort @@ -629,8 +629,8 @@ class _IOSSimulatorLogReader extends DeviceLogReader { } int compareIosVersions(String v1, String v2) { - final List<int> v1Fragments = v1.split('.').map(int.parse).toList(); - final List<int> v2Fragments = v2.split('.').map(int.parse).toList(); + final List<int> v1Fragments = v1.split('.').map<int>(int.parse).toList(); + final List<int> v2Fragments = v2.split('.').map<int>(int.parse).toList(); int i = 0; while (i < v1Fragments.length && i < v2Fragments.length) { diff --git a/packages/flutter_tools/lib/src/ios/xcodeproj.dart b/packages/flutter_tools/lib/src/ios/xcodeproj.dart index 9e638650aa36817b1abff77a2362f6e9238bc79f..2bb2a20c5ee4d7458aa17f880f6c0cc755cc0db0 100644 --- a/packages/flutter_tools/lib/src/ios/xcodeproj.dart +++ b/packages/flutter_tools/lib/src/ios/xcodeproj.dart @@ -171,7 +171,7 @@ class XcodeProjectInterpreter { Map<String, String> parseXcodeBuildSettings(String showBuildSettingsOutput) { final Map<String, String> settings = <String, String>{}; - for (Match match in showBuildSettingsOutput.split('\n').map(_settingExpr.firstMatch)) { + for (Match match in showBuildSettingsOutput.split('\n').map<Match>(_settingExpr.firstMatch)) { if (match != null) { settings[match[1]] = match[2]; } diff --git a/packages/flutter_tools/lib/src/plugins.dart b/packages/flutter_tools/lib/src/plugins.dart index e9a16d7a1ec46b7d4c83e25390d1a631ba389737..2b959c794a30d8c3ffc825f944719d68b34ea2c6 100644 --- a/packages/flutter_tools/lib/src/plugins.dart +++ b/packages/flutter_tools/lib/src/plugins.dart @@ -94,7 +94,7 @@ bool _writeFlutterPluginsList(FlutterProject project, List<Plugin> plugins) { final File pluginsFile = project.flutterPluginsFile; final String oldContents = _readFlutterPluginsList(project); final String pluginManifest = - plugins.map((Plugin p) => '${p.name}=${escapePath(p.path)}').join('\n'); + plugins.map<String>((Plugin p) => '${p.name}=${escapePath(p.path)}').join('\n'); if (pluginManifest.isNotEmpty) { pluginsFile.writeAsStringSync('$pluginManifest\n', flush: true); } else { @@ -147,7 +147,7 @@ public final class GeneratedPluginRegistrant { Future<void> _writeAndroidPluginRegistrant(FlutterProject project, List<Plugin> plugins) async { final List<Map<String, dynamic>> androidPlugins = plugins .where((Plugin p) => p.androidPackage != null && p.pluginClass != null) - .map((Plugin p) => <String, dynamic>{ + .map<Map<String, dynamic>>((Plugin p) => <String, dynamic>{ 'name': p.name, 'package': p.androidPackage, 'class': p.pluginClass, @@ -238,7 +238,7 @@ end Future<void> _writeIOSPluginRegistrant(FlutterProject project, List<Plugin> plugins) async { final List<Map<String, dynamic>> iosPlugins = plugins .where((Plugin p) => p.pluginClass != null) - .map((Plugin p) => <String, dynamic>{ + .map<Map<String, dynamic>>((Plugin p) => <String, dynamic>{ 'name': p.name, 'prefix': p.iosPrefix, 'class': p.pluginClass, diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart index 9df371afdd5e78d964bb5765980ee40dee18457e..065461158fdc52f7496c0671f02a43d40b8d2b3b 100644 --- a/packages/flutter_tools/lib/src/project.dart +++ b/packages/flutter_tools/lib/src/project.dart @@ -77,7 +77,7 @@ class FlutterProject { example.ios.productBundleIdentifier, ]; return Set<String>.from(candidates - .map(_organizationNameFromPackageName) + .map<String>(_organizationNameFromPackageName) .where((String name) => name != null)); } diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart index 2824e20e9edcbf17e0476f9fdb7341d22a2d5c04..73cee56b591eca0831d7e3de867221846cac6da0 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart @@ -89,7 +89,7 @@ class FlutterDevice { return vmServices .where((VMService service) => !service.isClosed) - .expand((VMService service) => viewFilter != null + .expand<FlutterView>((VMService service) => viewFilter != null ? service.vm.allViewsWithName(viewFilter) : service.vm.views) .toList(); @@ -149,7 +149,7 @@ class FlutterDevice { final Uri deviceAssetsDirectoryUri = devFS.baseUri.resolveUri( fs.path.toUri(getAssetBuildDirectory())); assert(deviceAssetsDirectoryUri != null); - await Future.wait(views.map( + await Future.wait<Null>(views.map<Future<Null>>( (FlutterView view) => view.setAssetDirectory(deviceAssetsDirectoryUri) )); } @@ -611,8 +611,8 @@ abstract class ResidentRunner { } Future<Null> stopEchoingDeviceLog() async { - await Future.wait( - flutterDevices.map((FlutterDevice device) => device.stopEchoingDeviceLog()) + await Future.wait<Null>( + flutterDevices.map<Future<Null>>((FlutterDevice device) => device.stopEchoingDeviceLog()) ); } diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart index f973c897e74830ec869ae45ce5d7dd48e49cf1c1..1d6a0a865a00abe3b8fa5523e845d74680f56011 100644 --- a/packages/flutter_tools/lib/src/run_hot.dart +++ b/packages/flutter_tools/lib/src/run_hot.dart @@ -582,11 +582,11 @@ class HotRunner extends ResidentRunner { ); countExpectedReports += reports.length; await Future - .wait(reports) + .wait<Map<String, dynamic>>(reports) .catchError((dynamic error) { return <Map<String, dynamic>>[error]; }) - .then( + .then<void>( (List<Map<String, dynamic>> list) { // TODO(aam): Investigate why we are validating only first reload report, // which seems to be current behavior diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart index edfc07433ca65774818dcc79d1cbb71a9ad7a24c..68cc46f2fca9f006d2620cfba9cd2474fa9bb6bf 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart @@ -425,7 +425,7 @@ class FlutterCommandRunner extends CommandRunner<Null> { List<String> getRepoRoots() { final String root = fs.path.absolute(Cache.flutterRoot); // not bin, and not the root - return <String>['dev', 'examples', 'packages'].map((String item) { + return <String>['dev', 'examples', 'packages'].map<String>((String item) { return fs.path.join(root, item); }).toList(); } @@ -434,7 +434,7 @@ class FlutterCommandRunner extends CommandRunner<Null> { List<Directory> getRepoPackages() { return getRepoRoots() .expand<String>((String root) => _gatherProjectPaths(root)) - .map((String dir) => fs.directory(dir)) + .map<Directory>((String dir) => fs.directory(dir)) .toList(); } diff --git a/packages/flutter_tools/lib/src/services.dart b/packages/flutter_tools/lib/src/services.dart index 2edceb70de77ac15b1c6db6549076ee9e71d66e1..bdc61d2c10e63922c82334b1bef2174426fa19d3 100644 --- a/packages/flutter_tools/lib/src/services.dart +++ b/packages/flutter_tools/lib/src/services.dart @@ -98,7 +98,7 @@ File generateServiceDefinitions( String dir, List<Map<String, String>> servicesIn ) { final List<Map<String, String>> services = - servicesIn.map((Map<String, String> service) => <String, String>{ + servicesIn.map<Map<String, String>>((Map<String, String> service) => <String, String>{ 'name': service['name'], 'class': service['android-class'] }).toList(); diff --git a/packages/flutter_tools/lib/src/test/flutter_platform.dart b/packages/flutter_tools/lib/src/test/flutter_platform.dart index 58ae3c6b664f0ee67e3d5c2dfeccf82bf588fa9b..e734fb28c9f354e0fd5ca4e5ffaf901537dd7a5e 100644 --- a/packages/flutter_tools/lib/src/test/flutter_platform.dart +++ b/packages/flutter_tools/lib/src/test/flutter_platform.dart @@ -526,7 +526,7 @@ class _FlutterPlatform extends PlatformPlugin { watcher?.handleStartedProcess(ProcessEvent(ourTestCount, process, processObservatoryUri)); }, startTimeoutTimer: () { - Future<_InitialResult>.delayed(_kTestStartupTimeout).then((_) => timeout.complete()); + Future<_InitialResult>.delayed(_kTestStartupTimeout).then<void>((_) => timeout.complete()); }, ); @@ -536,7 +536,7 @@ class _FlutterPlatform extends PlatformPlugin { // The local test harness could get bored of us. printTrace('test $ourTestCount: awaiting initial result for pid ${process.pid}'); - final _InitialResult initialResult = await Future.any(<Future<_InitialResult>>[ + final _InitialResult initialResult = await Future.any<_InitialResult>(<Future<_InitialResult>>[ process.exitCode.then<_InitialResult>((int exitCode) => _InitialResult.crashed), timeout.future.then<_InitialResult>((void value) => _InitialResult.timedOut), Future<_InitialResult>.delayed(_kTestProcessTimeout, () => _InitialResult.timedOut), @@ -615,13 +615,13 @@ class _FlutterPlatform extends PlatformPlugin { ); printTrace('test $ourTestCount: awaiting test result for pid ${process.pid}'); - final _TestResult testResult = await Future.any(<Future<_TestResult>>[ + final _TestResult testResult = await Future.any<_TestResult>(<Future<_TestResult>>[ process.exitCode.then<_TestResult>((int exitCode) { return _TestResult.crashed; }), harnessDone.future.then<_TestResult>((void value) { return _TestResult.harnessBailed; }), testDone.future.then<_TestResult>((void value) { return _TestResult.testBailed; }), ]); - await Future.wait(<Future<void>>[ + await Future.wait<void>(<Future<void>>[ harnessToTest.cancel(), testToHarness.cancel(), ]); @@ -870,8 +870,8 @@ class _FlutterPlatform extends PlatformPlugin { const String observatoryString = 'Observatory listening on '; for (Stream<List<int>> stream in <Stream<List<int>>>[process.stderr, process.stdout]) { - stream.transform(utf8.decoder) - .transform(const LineSplitter()) + stream.transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen( (String line) { if (line == _kStartTimeoutTimerMessage) { diff --git a/packages/flutter_tools/lib/src/tester/flutter_tester.dart b/packages/flutter_tools/lib/src/tester/flutter_tester.dart index 2487d63fb2e4c02ae5df1f482838fb6f11d37777..4e5ff5ff5747dae5da73b43774ae6528898fd2c4 100644 --- a/packages/flutter_tools/lib/src/tester/flutter_tester.dart +++ b/packages/flutter_tools/lib/src/tester/flutter_tester.dart @@ -153,16 +153,16 @@ class FlutterTesterDevice extends Device { }, ); // Setting a bool can't fail in the callback. - _process.exitCode.then((_) => _isRunning = false); // ignore: unawaited_futures + _process.exitCode.then<void>((_) => _isRunning = false); // ignore: unawaited_futures _process.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { _logReader.addLine(line); }); _process.stderr - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) { _logReader.addLine(line); }); diff --git a/packages/flutter_tools/lib/src/version.dart b/packages/flutter_tools/lib/src/version.dart index e1dea0e1ab55b385ce6c7a2a012a87f9c2408cd3..98612c0d19f79d07d80532e43aec72a193b9514a 100644 --- a/packages/flutter_tools/lib/src/version.dart +++ b/packages/flutter_tools/lib/src/version.dart @@ -161,7 +161,7 @@ class FlutterVersion { static Future<Null> _removeVersionCheckRemoteIfExists() async { final List<String> remotes = (await _run(<String>['git', 'remote'])) .split('\n') - .map((String name) => name.trim()) // to account for OS-specific line-breaks + .map<String>((String name) => name.trim()) // to account for OS-specific line-breaks .toList(); if (remotes.contains(_versionCheckRemote)) await _run(<String>['git', 'remote', 'remove', _versionCheckRemote]); diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 3fc389a96ce44d35ec94d69b5afc739955816750..ae7652efdef2deeb07fbde1867a686ced2c9ece1 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart @@ -289,7 +289,7 @@ class VMService { String method, Map<String, dynamic> params, ) { - return Future.any(<Future<Map<String, dynamic>>>[ + return Future.any<Map<String, dynamic>>(<Future<Map<String, dynamic>>>[ _peer.sendRequest(method, params).then<Map<String, dynamic>>(castStringKeyedMap), _connectionError.future, ]); @@ -954,7 +954,7 @@ class VM extends ServiceObjectOwner { return; _viewCache.clear(); for (Isolate isolate in isolates.toList()) { - await vmService.vm.invokeRpc('_flutter.listViews', + await vmService.vm.invokeRpc<ServiceObject>('_flutter.listViews', timeout: kLongRequestTimeout, params: <String, dynamic> {'isolateId': isolate.id}); } @@ -1208,7 +1208,7 @@ class Isolate extends ServiceObjectOwner { <Future<ProgramElement>>[]; for (Map<String, dynamic> element in response['unused']) unusedElements.add(_describeElement(element)); - return Future.wait(unusedElements); + return Future.wait<ProgramElement>(unusedElements); } /// Resumes the isolate. @@ -1388,7 +1388,7 @@ class ServiceMap extends ServiceObject implements Map<String, dynamic> { @override void removeWhere(bool test(String key, dynamic value)) => _map.removeWhere(test); @override - Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> transform(String key, dynamic value)) => _map.map(transform); + Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> transform(String key, dynamic value)) => _map.map<K2, V2>(transform); @override Iterable<MapEntry<String, dynamic>> get entries => _map.entries; @override @@ -1440,7 +1440,7 @@ class FlutterView extends ServiceObject { Future<Null> setAssetDirectory(Uri assetsDirectory) async { assert(assetsDirectory != null); - await owner.vmService.vm.invokeRpc('_flutter.setAssetBundlePath', + await owner.vmService.vm.invokeRpc<ServiceObject>('_flutter.setAssetBundlePath', params: <String, dynamic>{ 'isolateId': _uiIsolate.id, 'viewId': id, diff --git a/packages/flutter_tools/lib/src/vscode/vscode_validator.dart b/packages/flutter_tools/lib/src/vscode/vscode_validator.dart index f68a3ec70e468b4b1289c56dda79c35f8607c58c..b93e1d02984d49608652c50c9f1f28acfed32d9f 100644 --- a/packages/flutter_tools/lib/src/vscode/vscode_validator.dart +++ b/packages/flutter_tools/lib/src/vscode/vscode_validator.dart @@ -18,7 +18,7 @@ class VsCodeValidator extends DoctorValidator { static Iterable<DoctorValidator> get installedValidators { return VsCode .allInstalled() - .map((VsCode vsCode) => VsCodeValidator(vsCode)); + .map<DoctorValidator>((VsCode vsCode) => VsCodeValidator(vsCode)); } @override @@ -32,11 +32,11 @@ class VsCodeValidator extends DoctorValidator { if (_vsCode.isValid) { type = ValidationType.installed; messages.addAll(_vsCode.validationMessages - .map((String m) => ValidationMessage(m))); + .map<ValidationMessage>((String m) => ValidationMessage(m))); } else { type = ValidationType.partial; messages.addAll(_vsCode.validationMessages - .map((String m) => ValidationMessage.error(m))); + .map<ValidationMessage>((String m) => ValidationMessage.error(m))); messages.add(ValidationMessage( 'Flutter extension not installed; install from\n$extensionMarketplaceUrl')); } diff --git a/packages/flutter_tools/test/android/android_workflow_test.dart b/packages/flutter_tools/test/android/android_workflow_test.dart index 73c9dc1a8025b85b0670c1e4a257f88c8dc91cd6..9564bd86c5fb27ae20ba0664e1c667c2531a1e95 100644 --- a/packages/flutter_tools/test/android/android_workflow_test.dart +++ b/packages/flutter_tools/test/android/android_workflow_test.dart @@ -33,7 +33,7 @@ void main() { MockProcess Function(List<String>) processMetaFactory(List<String> stdout) { final Stream<List<int>> stdoutStream = Stream<List<int>>.fromIterable( - stdout.map((String s) => s.codeUnits)); + stdout.map<List<int>>((String s) => s.codeUnits)); return (List<String> command) => MockProcess(stdout: stdoutStream); } diff --git a/packages/flutter_tools/test/base/context_test.dart b/packages/flutter_tools/test/base/context_test.dart index f7291dc3d0a41626ecfebfcedd9e1075a345cd68..94ec5675a79a04f7c11bac26feffc67193498e24 100644 --- a/packages/flutter_tools/test/base/context_test.dart +++ b/packages/flutter_tools/test/base/context_test.dart @@ -24,7 +24,7 @@ void main() { test('returns root context in child of root zone if zone was manually created', () { final Zone rootZone = Zone.current; final AppContext rootContext = context; - runZoned(() { + runZoned<void>(() { expect(Zone.current, isNot(rootZone)); expect(Zone.current.parent, rootZone); expect(context, rootContext); @@ -61,7 +61,7 @@ void main() { final AppContext rootContext = context; await rootContext.run<void>(name: 'child', body: () { final AppContext childContext = context; - runZoned(() { + runZoned<void>(() { expect(context, isNot(rootContext)); expect(context, same(childContext)); expect(context.name, 'child'); @@ -79,7 +79,7 @@ void main() { String value; await context.run<void>( body: () { - outer.future.then((_) { + outer.future.then<void>((_) { value = context[String]; inner.complete(); }); diff --git a/packages/flutter_tools/test/commands/daemon_test.dart b/packages/flutter_tools/test/commands/daemon_test.dart index 15301da9ffe1606d5439d5712eebbad30514ca69..b1315ea304c7ed94aa1bf0b2d8f347a1c5c4a720 100644 --- a/packages/flutter_tools/test/commands/daemon_test.dart +++ b/packages/flutter_tools/test/commands/daemon_test.dart @@ -73,7 +73,7 @@ void main() { testUsingContext('printStatus should log to stdout when logToStdout is enabled', () async { final StringBuffer buffer = StringBuffer(); - await runZoned(() async { + await runZoned<Future<void>>(() async { final StreamController<Map<String, dynamic>> commands = StreamController<Map<String, dynamic>>(); final StreamController<Map<String, dynamic>> responses = StreamController<Map<String, dynamic>>(); daemon = Daemon( @@ -228,7 +228,7 @@ void main() { daemon.deviceDomain.addDeviceDiscoverer(discoverer); discoverer.addDevice(MockAndroidDevice()); - return await responses.stream.skipWhile(_isConnectedEvent).first.then((Map<String, dynamic> response) async { + return await responses.stream.skipWhile(_isConnectedEvent).first.then<void>((Map<String, dynamic> response) async { expect(response['event'], 'device.added'); expect(response['params'], isMap); diff --git a/packages/flutter_tools/test/commands/packages_test.dart b/packages/flutter_tools/test/commands/packages_test.dart index 95c7f461be10f6bf23cf78d6744c2c49f701b269..5f74b3a430d521a9510d736a4c03b37c1e28c857 100644 --- a/packages/flutter_tools/test/commands/packages_test.dart +++ b/packages/flutter_tools/test/commands/packages_test.dart @@ -159,7 +159,7 @@ void main() { pubOutput, pluginRegistrants, pluginWitnesses, - ].expand((List<String> list) => list); + ].expand<String>((List<String> list) => list); for (String path in allFiles) { final File file = fs.file(fs.path.join(projectPath, path)); if (file.existsSync()) @@ -285,7 +285,7 @@ void main() { final Future<Null> simulateUserInput = Future<Null>(() { mockStdio.simulateStdin('y'); }); - await Future.wait(<Future<Null>>[runPackages, runPrompt, simulateUserInput]); + await Future.wait<Null>(<Future<Null>>[runPackages, runPrompt, simulateUserInput]); final List<String> commands = mockProcessManager.commands; expect(commands, hasLength(2)); expect(commands[0], matches(r'dart-sdk[\\/]bin[\\/]pub')); diff --git a/packages/flutter_tools/test/integration/test_driver.dart b/packages/flutter_tools/test/integration/test_driver.dart index e70eb1573c3bf80060319144ffa3245449b7468a..b8503a2008c9e626e1db6adaf97ad581ba45a6e3 100644 --- a/packages/flutter_tools/test/integration/test_driver.dart +++ b/packages/flutter_tools/test/integration/test_driver.dart @@ -127,7 +127,7 @@ class FlutterTestDriver { // Proxy the stream/sink for the VM Client so we can debugPrint it. final StreamChannel<String> channel = IOWebSocketChannel.connect(_vmServiceWsUri) .cast<String>() - .changeStream((Stream<String> stream) => stream.map(_debugPrint)) + .changeStream((Stream<String> stream) => stream.map<String>(_debugPrint)) .changeSink((StreamSink<String> sink) => StreamController<String>() ..stream.listen((String s) => sink.add(_debugPrint(s)))); @@ -282,7 +282,7 @@ class FlutterTestDriver { Future<VMInstanceRef> evaluateExpression(String expression) async { final VMFrame topFrame = await getTopStackFrame(); - return _timeoutWithMessages(() => topFrame.evaluate(expression), + return _timeoutWithMessages<VMInstanceRef>(() => topFrame.evaluate(expression), message: 'Timed out evaluating expression ($expression)'); } @@ -334,7 +334,7 @@ class FlutterTestDriver { } }); - return _timeoutWithMessages(() => response.future, + return _timeoutWithMessages<Map<String, dynamic>>(() => response.future, timeout: timeout, message: event != null ? 'Did not receive expected $event event.' @@ -406,5 +406,5 @@ class FlutterTestDriver { } Stream<String> _transformToLines(Stream<List<int>> byteStream) { - return byteStream.transform(utf8.decoder).transform(const LineSplitter()); + return byteStream.transform<String>(utf8.decoder).transform<String>(const LineSplitter()); } diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart index b20bac2a6d13089ecce48993e6fd0c4bb79fa5e5..e91e1559af7b09cf4cac8c30813771bccda79af1 100644 --- a/packages/flutter_tools/test/src/context.dart +++ b/packages/flutter_tools/test/src/context.dart @@ -85,7 +85,7 @@ void testUsingContext(String description, dynamic testMethod(), { body: () { final String flutterRoot = getFlutterRoot(); - return runZoned(() { + return runZoned<Future<dynamic>>(() { try { return context.run<dynamic>( // Apply the overrides to the test context in the zone since their @@ -198,7 +198,7 @@ class MockDoctor extends Doctor { /// the Doctor. List<DoctorValidator> get validators { final List<DoctorValidator> superValidators = super.validators; - return superValidators.map((DoctorValidator v) { + return superValidators.map<DoctorValidator>((DoctorValidator v) { if (v is AndroidValidator) { return MockAndroidWorkflowValidator(); } diff --git a/packages/flutter_tools/test/src/mocks.dart b/packages/flutter_tools/test/src/mocks.dart index d21cc91921ef76c839b8dee5ca34e910d2755942..5bcb4bcce9c214842b0892d2d6963df2524bef2c 100644 --- a/packages/flutter_tools/test/src/mocks.dart +++ b/packages/flutter_tools/test/src/mocks.dart @@ -303,8 +303,8 @@ class MockStdio extends Stdio { _stdin.add(utf8.encode('$line\n')); } - List<String> get writtenToStdout => _stdout.writes.map(_stdout.encoding.decode).toList(); - List<String> get writtenToStderr => _stderr.writes.map(_stderr.encoding.decode).toList(); + List<String> get writtenToStdout => _stdout.writes.map<String>(_stdout.encoding.decode).toList(); + List<String> get writtenToStderr => _stderr.writes.map<String>(_stderr.encoding.decode).toList(); } class MockPollingDeviceDiscovery extends PollingDeviceDiscovery { diff --git a/packages/flutter_tools/tool/daemon_client.dart b/packages/flutter_tools/tool/daemon_client.dart index 10f48959ef3bdaedccb196dd472d6a3dd7ad7ca4..d8a1d75994a935907c12a6affcdf862eab11ecf7 100644 --- a/packages/flutter_tools/tool/daemon_client.dart +++ b/packages/flutter_tools/tool/daemon_client.dart @@ -23,13 +23,13 @@ Future<Null> main() async { print('daemon process started, pid: ${daemon.pid}'); daemon.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) + .transform<String>(utf8.decoder) + .transform<String>(const LineSplitter()) .listen((String line) => print('<== $line')); daemon.stderr.listen((dynamic data) => stderr.add(data)); stdout.write('> '); - stdin.transform(utf8.decoder).transform(const LineSplitter()).listen((String line) { + stdin.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).listen((String line) { final List<String> words = line.split(' '); if (line == 'version' || line == 'v') { diff --git a/packages/fuchsia_remote_debug_protocol/lib/src/fuchsia_remote_connection.dart b/packages/fuchsia_remote_debug_protocol/lib/src/fuchsia_remote_connection.dart index f9add30b9d54988d8e8ebc8fb8ccd1d91663d2aa..1fec7cac1bf109a6d221e4b96a4209f7ae32001d 100644 --- a/packages/fuchsia_remote_debug_protocol/lib/src/fuchsia_remote_connection.dart +++ b/packages/fuchsia_remote_debug_protocol/lib/src/fuchsia_remote_connection.dart @@ -306,9 +306,9 @@ class FuchsiaRemoteConnection { } isolates.add(vmService.getMainIsolatesByPattern(pattern)); } - final List<IsolateRef> result = await Future.wait(isolates) + final List<IsolateRef> result = await Future.wait<List<IsolateRef>>(isolates) .timeout(timeout) - .then((List<List<IsolateRef>> listOfLists) { + .then<List<IsolateRef>>((List<List<IsolateRef>> listOfLists) { final List<List<IsolateRef>> mutableListOfLists = List<List<IsolateRef>>.from(listOfLists) ..retainWhere((List<IsolateRef> list) => list.isNotEmpty); @@ -477,7 +477,7 @@ class FuchsiaRemoteConnection { await stop(); final List<int> servicePorts = await getDeviceServicePorts(); final List<PortForwarder> forwardedVmServicePorts = - await Future.wait(servicePorts.map((int deviceServicePort) { + await Future.wait<PortForwarder>(servicePorts.map<Future<PortForwarder>>((int deviceServicePort) { return fuchsiaPortForwardingFunction( _sshCommandRunner.address, deviceServicePort,