Even more types
diff --git a/packages/flutter_tools/.analysis_options b/packages/flutter_tools/.analysis_options
index 9be1748..fb5be33 100644
--- a/packages/flutter_tools/.analysis_options
+++ b/packages/flutter_tools/.analysis_options
@@ -16,14 +16,13 @@
strong_mode_static_type_error: ignore
strong_mode_down_cast_composite: ignore
type_argument_not_matching_bounds: ignore
- argument_type_not_assignable: ignore
# we allow having TODOs in the code
todo: ignore
linter:
rules:
- avoid_empty_else
- always_declare_return_types
- # - always_specify_types # still a lot of work to do before enabling this one
+ - always_specify_types
# - annotate_overrides # still a lot of work to do before enabling this one
# - avoid_as # https://github.com/dart-lang/linter/issues/195
- avoid_init_to_null
diff --git a/packages/flutter_tools/lib/flutter_tools.dart b/packages/flutter_tools/lib/flutter_tools.dart
index 076b0f6..653997b 100644
--- a/packages/flutter_tools/lib/flutter_tools.dart
+++ b/packages/flutter_tools/lib/flutter_tools.dart
@@ -10,17 +10,17 @@
/// Assembles a Flutter .flx file from a pre-existing manifest descriptor and a
/// pre-compiled snapshot.
Future<int> assembleFlx({
- Map manifestDescriptor: const {},
+ Map<String, dynamic> manifestDescriptor: const <String, dynamic>{},
File snapshotFile: null,
String assetBasePath: flx.defaultAssetBasePath,
String outputPath: flx.defaultFlxOutputPath,
String privateKeyPath: flx.defaultPrivateKeyPath
}) async {
return flx.assemble(
- manifestDescriptor: manifestDescriptor,
- snapshotFile: snapshotFile,
- assetBasePath: assetBasePath,
- outputPath: outputPath,
- privateKeyPath: privateKeyPath
+ manifestDescriptor: manifestDescriptor,
+ snapshotFile: snapshotFile,
+ assetBasePath: assetBasePath,
+ outputPath: outputPath,
+ privateKeyPath: privateKeyPath
);
}
diff --git a/packages/flutter_tools/lib/src/android/adb.dart b/packages/flutter_tools/lib/src/android/adb.dart
index e8b648e..9d35daa2 100644
--- a/packages/flutter_tools/lib/src/android/adb.dart
+++ b/packages/flutter_tools/lib/src/android/adb.dart
@@ -82,7 +82,7 @@
Socket socket;
bool isFirstNotification = true;
- controller = new StreamController(
+ controller = new StreamController<List<AdbDevice>>(
onListen: () async {
socket = await Socket.connect(InternetAddress.LOOPBACK_IP_V4, adbServerPort);
printTrace('--> host:track-devices');
@@ -121,7 +121,7 @@
return controller.stream;
}
- Future _populateDeviceNames(List<AdbDevice> devices) async {
+ Future<Null> _populateDeviceNames(List<AdbDevice> devices) async {
for (AdbDevice device in devices) {
if (device.modelID == null) {
// If we don't have a name of a device in our cache, call `device -l` to populate it.
@@ -135,7 +135,7 @@
}
}
- Future _populateDeviceCache() async {
+ Future<Null> _populateDeviceCache() async {
List<AdbDevice> devices = await listDevices();
for (AdbDevice device in devices)
_idToNameCache[device.id] = device.modelID;
diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart
index 4c63646..b1b1d50 100644
--- a/packages/flutter_tools/lib/src/android/android_device.dart
+++ b/packages/flutter_tools/lib/src/android/android_device.dart
@@ -180,7 +180,7 @@
return true;
}
- Future _forwardObservatoryPort(int port) async {
+ Future<Null> _forwardObservatoryPort(int port) async {
bool portWasZero = port == 0;
try {
@@ -485,8 +485,8 @@
new StreamController<String>.broadcast();
Process _process;
- StreamSubscription _stdoutSubscription;
- StreamSubscription _stderrSubscription;
+ StreamSubscription<String> _stdoutSubscription;
+ StreamSubscription<String> _stderrSubscription;
Stream<String> get lines => _linesStreamController.stream;
@@ -494,9 +494,9 @@
bool get isReading => _process != null;
- Future get finished => _process != null ? _process.exitCode : new Future.value(0);
+ Future<int> get finished => _process != null ? _process.exitCode : new Future<int>.value(0);
- Future start() async {
+ Future<Null> start() async {
if (_process != null)
throw new StateError('_AdbLogReader must be stopped before it can be started.');
@@ -516,7 +516,7 @@
_process.exitCode.then(_onExit);
}
- Future stop() async {
+ Future<Null> stop() async {
if (_process == null)
throw new StateError('_AdbLogReader must be started before it can be stopped.');
@@ -604,7 +604,7 @@
return hostPort;
}
- Future unforward(ForwardedPort forwardedPort) async {
+ Future<Null> unforward(ForwardedPort forwardedPort) async {
runCheckedSync(device.adbCommandForDevice(
<String>['forward', '--remove', 'tcp:${forwardedPort.hostPort}']
));
diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart
index b1bab87..3b7dd1f 100644
--- a/packages/flutter_tools/lib/src/artifacts.dart
+++ b/packages/flutter_tools/lib/src/artifacts.dart
@@ -235,7 +235,7 @@
/// Download a file from the given url and write it to the cache.
/// If [unzip] is true, treat the url as a zip file, and unzip it to the
/// directory given.
- static Future _downloadFileToCache(Uri url, FileSystemEntity cachedFile, bool unzip) async {
+ static Future<Null> _downloadFileToCache(Uri url, FileSystemEntity cachedFile, bool unzip) async {
if (!cachedFile.parent.existsSync())
cachedFile.parent.createSync(recursive: true);
diff --git a/packages/flutter_tools/lib/src/base/file_system.dart b/packages/flutter_tools/lib/src/base/file_system.dart
index f893eda..0ba8af0 100644
--- a/packages/flutter_tools/lib/src/base/file_system.dart
+++ b/packages/flutter_tools/lib/src/base/file_system.dart
@@ -46,7 +46,7 @@
}
/// Uses in-memory replacments for `dart:io` functionality. Useful in tests.
-void useInMemoryFileSystem({ cwd: '/', ExitFunction exitFunction }) {
+void useInMemoryFileSystem({ String cwd: '/', ExitFunction exitFunction }) {
MemoryFileSystem memFs = new MemoryFileSystem();
fs = memFs;
syncFs = new SyncMemoryFileSystem(backedBy: memFs.storage);
diff --git a/packages/flutter_tools/lib/src/base/logger.dart b/packages/flutter_tools/lib/src/base/logger.dart
index 8d0b4f5..46a3791 100644
--- a/packages/flutter_tools/lib/src/base/logger.dart
+++ b/packages/flutter_tools/lib/src/base/logger.dart
@@ -4,7 +4,7 @@
import 'dart:io';
-final _terminal = new _AnsiTerminal();
+final _AnsiTerminal _terminal = new _AnsiTerminal();
abstract class Logger {
bool get isVerbose => false;
diff --git a/packages/flutter_tools/lib/src/base/process.dart b/packages/flutter_tools/lib/src/base/process.dart
index 46eff71..db37581 100644
--- a/packages/flutter_tools/lib/src/base/process.dart
+++ b/packages/flutter_tools/lib/src/base/process.dart
@@ -57,9 +57,9 @@
return await process.exitCode;
}
-Future runAndKill(List<String> cmd, Duration timeout) {
+Future<Null> runAndKill(List<String> cmd, Duration timeout) {
Future<Process> proc = runDetached(cmd);
- return new Future.delayed(timeout, () async {
+ return new Future<Null>.delayed(timeout, () async {
printTrace('Intentionally killing ${cmd[0]}');
Process.killPid((await proc).pid);
});
diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart
index fb6e667..f1326c3 100644
--- a/packages/flutter_tools/lib/src/commands/analyze.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze.dart
@@ -223,7 +223,7 @@
// determine what all the various .packages files depend on
PackageDependencyTracker dependencies = new PackageDependencyTracker();
- for (Directory directory in pubSpecDirectories.map((path) => new Directory(path))) {
+ for (Directory directory in pubSpecDirectories.map((String path) => new Directory(path))) {
String pubSpecYamlPath = path.join(directory.path, 'pubspec.yaml');
File pubSpecYamlFile = new File(pubSpecYamlPath);
if (pubSpecYamlFile.existsSync()) {
@@ -242,8 +242,8 @@
dotPackages
.readAsStringSync()
.split('\n')
- .where((line) => !line.startsWith(new RegExp(r'^ *#')))
- .forEach((line) {
+ .where((String line) => !line.startsWith(new RegExp(r'^ *#')))
+ .forEach((String line) {
int colon = line.indexOf(':');
if (colon > 0)
dependencies.add(line.substring(0, colon), path.normalize(path.absolute(directory.path, path.fromUri(line.substring(colon+1)))), dotPackagesPath);
@@ -634,7 +634,7 @@
int _id = 0;
- Future start() async {
+ Future<Null> start() async {
String snapshot = path.join(sdk, 'bin/snapshots/analysis_server.dart.snapshot');
List<String> args = <String>[snapshot, '--sdk', sdk];
@@ -687,12 +687,12 @@
dynamic response = JSON.decode(line);
- if (response is Map) {
+ if (response is Map<dynamic, dynamic>) {
if (response['event'] != null) {
String event = response['event'];
dynamic params = response['params'];
- if (params is Map) {
+ if (params is Map<dynamic, dynamic>) {
if (event == 'server.status')
_handleStatus(response['params']);
else if (event == 'analysis.errors')
@@ -725,7 +725,7 @@
_errorsController.add(new FileAnalysisErrors(file, errors));
}
- Future dispose() async => _process?.kill();
+ Future<bool> dispose() async => _process?.kill();
}
class FileAnalysisErrors {
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart
index 8e6fc39..ec18475 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -135,7 +135,7 @@
printStatus('Creating project ${path.basename(projectName)}:');
- Map templateContext = <String, dynamic>{
+ Map<String, dynamic> templateContext = <String, dynamic>{
'projectName': projectName,
'androidIdentifier': _createAndroidIdentifier(projectName),
'iosIdentifier': _createUTIIdentifier(projectName),
diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart
index ca63c15..e2a477a 100644
--- a/packages/flutter_tools/lib/src/commands/daemon.dart
+++ b/packages/flutter_tools/lib/src/commands/daemon.dart
@@ -53,7 +53,7 @@
return JSON.decode(line);
});
- Daemon daemon = new Daemon(commandStream, (Map command) {
+ Daemon daemon = new Daemon(commandStream, (Map<String, dynamic> command) {
stdout.writeln('[${JSON.encode(command, toEncodable: _jsonEncodeObject)}]');
}, daemonCommand: this, notifyingLogger: notifyingLogger);
@@ -73,7 +73,7 @@
typedef Future<dynamic> CommandHandler(dynamic args);
class Daemon {
- Daemon(Stream<Map> commandStream, this.sendCommand, {
+ Daemon(Stream<Map<String, dynamic>> commandStream, this.sendCommand, {
this.daemonCommand,
this.notifyingLogger
}) {
@@ -84,7 +84,7 @@
// Start listening.
commandStream.listen(
- (Map request) => _handleRequest(request),
+ (Map<String, dynamic> request) => _handleRequest(request),
onDone: () => _onExitCompleter.complete(0)
);
}
@@ -106,7 +106,7 @@
Future<int> get onExit => _onExitCompleter.future;
- void _handleRequest(Map request) {
+ void _handleRequest(Map<String, dynamic> request) {
// {id, method, params}
// [id] is an opaque type to us.
@@ -133,7 +133,7 @@
}
}
- void _send(Map map) => sendCommand(map);
+ void _send(Map<String, dynamic> map) => sendCommand(map);
void shutdown() {
_domainMap.values.forEach((Domain domain) => domain.dispose());
@@ -147,7 +147,7 @@
final Daemon daemon;
final String name;
- final Map<String, CommandHandler> _handlers = {};
+ final Map<String, CommandHandler> _handlers = <String, CommandHandler>{};
void registerHandler(String name, CommandHandler handler) {
_handlers[name] = handler;
@@ -158,18 +158,18 @@
String toString() => name;
void handleCommand(String command, dynamic id, dynamic args) {
- new Future.sync(() {
+ new Future<dynamic>.sync(() {
if (_handlers.containsKey(command))
return _handlers[command](args);
throw 'command not understood: $name.$command';
- }).then((result) {
+ }).then((dynamic result) {
if (result == null) {
- _send({'id': id});
+ _send(<String, dynamic>{'id': id});
} else {
- _send({'id': id, 'result': _toJsonable(result)});
+ _send(<String, dynamic>{'id': id, 'result': _toJsonable(result)});
}
- }).catchError((error, trace) {
- _send({'id': id, 'error': _toJsonable(error)});
+ }).catchError((dynamic error, dynamic trace) {
+ _send(<String, dynamic>{'id': id, 'error': _toJsonable(error)});
});
}
@@ -180,7 +180,7 @@
_send(map);
}
- void _send(Map map) => daemon._send(map);
+ void _send(Map<String, dynamic> map) => daemon._send(map);
void dispose() { }
}
@@ -212,12 +212,12 @@
StreamSubscription<LogMessage> _subscription;
Future<String> version(dynamic args) {
- return new Future.value(protocolVersion);
+ return new Future<String>.value(protocolVersion);
}
- Future shutdown(dynamic args) {
+ Future<Null> shutdown(dynamic args) {
Timer.run(() => daemon.shutdown());
- return new Future.value();
+ return new Future<Null>.value();
}
void dispose() {
@@ -352,23 +352,23 @@
List<Device> devices = _discoverers.expand((PollingDeviceDiscovery discoverer) {
return discoverer.devices;
}).toList();
- return new Future.value(devices);
+ return new Future<List<Device>>.value(devices);
}
/// Enable device events.
- Future enable(dynamic args) {
+ Future<Null> enable(dynamic args) {
for (PollingDeviceDiscovery discoverer in _discoverers) {
discoverer.startPolling();
}
- return new Future.value();
+ return new Future<Null>.value();
}
/// Disable device events.
- Future disable(dynamic args) {
+ Future<Null> disable(dynamic args) {
for (PollingDeviceDiscovery discoverer in _discoverers) {
discoverer.stopPolling();
}
- return new Future.value();
+ return new Future<Null>.value();
}
void dispose() {
@@ -398,7 +398,7 @@
}
dynamic _toJsonable(dynamic obj) {
- if (obj is String || obj is int || obj is bool || obj is Map || obj is List || obj == null)
+ if (obj is String || obj is int || obj is bool || obj is Map<dynamic, dynamic> || obj is List<dynamic> || obj == null)
return obj;
if (obj is Device)
return obj;
diff --git a/packages/flutter_tools/lib/src/commands/drive.dart b/packages/flutter_tools/lib/src/commands/drive.dart
index 5a1027c..5cbbe6f 100644
--- a/packages/flutter_tools/lib/src/commands/drive.dart
+++ b/packages/flutter_tools/lib/src/commands/drive.dart
@@ -106,7 +106,7 @@
try {
return await testRunner([testFile])
.then((_) => 0)
- .catchError((error, stackTrace) {
+ .catchError((dynamic error, dynamic stackTrace) {
printError('CAUGHT EXCEPTION: $error\n$stackTrace');
return 1;
});
@@ -182,9 +182,9 @@
// we look for an Android device. If there's one, we use that. Otherwise,
// we launch a new iOS Simulator.
Device reusableDevice = devices.firstWhere(
- (d) => d.isLocalEmulator,
+ (Device d) => d.isLocalEmulator,
orElse: () {
- return devices.firstWhere((d) => d is AndroidDevice,
+ return devices.firstWhere((Device d) => d is AndroidDevice,
orElse: () => null);
}
);
@@ -210,7 +210,7 @@
return null;
} else if (devices.length > 1) {
printStatus('Found multiple connected devices:');
- printStatus(devices.map((d) => ' - ${d.name}\n').join(''));
+ printStatus(devices.map((Device d) => ' - ${d.name}\n').join(''));
}
printStatus('Using device ${devices.first.name}.');
return devices.first;
diff --git a/packages/flutter_tools/lib/src/commands/logs.dart b/packages/flutter_tools/lib/src/commands/logs.dart
index a5b9a01..9170c12 100644
--- a/packages/flutter_tools/lib/src/commands/logs.dart
+++ b/packages/flutter_tools/lib/src/commands/logs.dart
@@ -38,7 +38,7 @@
if (!logReader.isReading)
await logReader.start();
- StreamSubscription subscription = logReader.lines.listen(printStatus);
+ StreamSubscription<String> subscription = logReader.lines.listen(printStatus);
// Wait for the log reader to be finished.
int result = await logReader.finished;
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart
index 0826b3d..26c7dfc 100644
--- a/packages/flutter_tools/lib/src/commands/run.dart
+++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -185,7 +185,7 @@
}
// Allow any stop commands from above to start work.
- await new Future.delayed(Duration.ZERO);
+ await new Future<Duration>.delayed(Duration.ZERO);
if (install) {
printTrace('Running install command.');
@@ -234,7 +234,7 @@
///
/// This does not fail if we're unable to connect, and times out after the given
/// [timeout].
-Future delayUntilObservatoryAvailable(String host, int port, {
+Future<Null> delayUntilObservatoryAvailable(String host, int port, {
Duration timeout: const Duration(seconds: 10)
}) async {
Stopwatch stopwatch = new Stopwatch()..start();
@@ -246,10 +246,10 @@
try {
WebSocket ws = await WebSocket.connect(url);
printTrace('Connected to the observatory port.');
- ws.close().catchError((error) => null);
+ ws.close().catchError((dynamic error) => null);
return;
} catch (error) {
- await new Future.delayed(new Duration(milliseconds: 250));
+ await new Future<Null>.delayed(new Duration(milliseconds: 250));
}
}
diff --git a/packages/flutter_tools/lib/src/commands/run_mojo.dart b/packages/flutter_tools/lib/src/commands/run_mojo.dart
index b3d759b..3f9bde4 100644
--- a/packages/flutter_tools/lib/src/commands/run_mojo.dart
+++ b/packages/flutter_tools/lib/src/commands/run_mojo.dart
@@ -22,7 +22,7 @@
final String description = 'Run a Flutter app in mojo (from github.com/domokit/mojo).';
final bool _hideCommand;
- RunMojoCommand({ hideCommand: false }) : _hideCommand = hideCommand {
+ RunMojoCommand({ bool hideCommand: false }) : _hideCommand = hideCommand {
argParser.addFlag('android', negatable: false, help: 'Run on an Android device');
argParser.addFlag('checked', negatable: false, help: 'Run Flutter in checked mode');
argParser.addFlag('mojo-debug', negatable: false, help: 'Use Debug build of mojo');
@@ -64,7 +64,7 @@
}
String _getMojoShellPath() {
- final mojoBuildType = argResults['mojo-debug'] ? 'Debug' : 'Release';
+ final String mojoBuildType = argResults['mojo-debug'] ? 'Debug' : 'Release';
return _makePathAbsolute(path.join(argResults['mojo-path'], 'out', mojoBuildType, 'mojo_shell'));
}
diff --git a/packages/flutter_tools/lib/src/commands/trace.dart b/packages/flutter_tools/lib/src/commands/trace.dart
index 2f644c0..4387a60 100644
--- a/packages/flutter_tools/lib/src/commands/trace.dart
+++ b/packages/flutter_tools/lib/src/commands/trace.dart
@@ -41,7 +41,7 @@
// Setting neither flags or both flags means do both commands and wait
// duration seconds in between.
device.startTracing(androidApp);
- await new Future.delayed(
+ await new Future<Null>.delayed(
new Duration(seconds: int.parse(argResults['duration'])),
() => _stopTracing(device, androidApp)
);
@@ -53,7 +53,7 @@
return 0;
}
- Future _stopTracing(AndroidDevice android, AndroidApk androidApp) async {
+ Future<Null> _stopTracing(AndroidDevice android, AndroidApk androidApp) async {
String tracePath = await android.stopTracing(androidApp, outPath: argResults['out']);
if (tracePath == null) {
printError('No trace file saved.');
diff --git a/packages/flutter_tools/lib/src/commands/update_packages.dart b/packages/flutter_tools/lib/src/commands/update_packages.dart
index a17823d..e89c3da 100644
--- a/packages/flutter_tools/lib/src/commands/update_packages.dart
+++ b/packages/flutter_tools/lib/src/commands/update_packages.dart
@@ -24,7 +24,7 @@
}
class UpdatePackagesCommand extends FlutterCommand {
- UpdatePackagesCommand({ hideCommand: false }) : _hideCommand = hideCommand {
+ UpdatePackagesCommand({ bool hideCommand: false }) : _hideCommand = hideCommand {
argParser.addFlag(
'upgrade',
help: 'Run "pub upgrade" rather than "pub get".',
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index 5b6406a..20f145b 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -225,7 +225,7 @@
Future<int> forward(int devicePort, {int hostPort: null});
/// Stops forwarding [forwardedPort].
- Future unforward(ForwardedPort forwardedPort);
+ Future<Null> unforward(ForwardedPort forwardedPort);
}
/// Read the log for a particular device. Subclasses must implement `hashCode`
@@ -240,16 +240,16 @@
Stream<String> get lines;
/// Start reading logs from the device.
- Future start();
+ Future<Null> start();
/// Actively reading lines from the log?
bool get isReading;
/// Actively stop reading logs from the device.
- Future stop();
+ Future<Null> stop();
/// Completes when the log is finished.
- Future get finished;
+ Future<int> get finished;
int get hashCode;
bool operator ==(dynamic other);
diff --git a/packages/flutter_tools/lib/src/flx.dart b/packages/flutter_tools/lib/src/flx.dart
index f2938a8..79ca4d1 100644
--- a/packages/flutter_tools/lib/src/flx.dart
+++ b/packages/flutter_tools/lib/src/flx.dart
@@ -38,7 +38,7 @@
const String _kMaterialIconsKey = 'fonts/MaterialIcons-Regular.ttf';
-List _getMaterialFonts() {
+List<Map<String, dynamic>> _getMaterialFonts() {
return [{
'family': 'MaterialIcons',
'fonts': [{
@@ -57,7 +57,7 @@
];
}
-Map<_Asset, List<_Asset>> _parseAssets(Map manifestDescriptor, String assetBase) {
+Map<_Asset, List<_Asset>> _parseAssets(Map<String, dynamic> manifestDescriptor, String assetBase) {
Map<_Asset, List<_Asset>> result = <_Asset, List<_Asset>>{};
if (manifestDescriptor == null)
return result;
@@ -112,8 +112,8 @@
return new ZipEntry.fromString('AssetManifest.json', JSON.encode(json));
}
-ZipEntry _createFontManifest(Map manifestDescriptor, List additionalFonts) {
- List fonts = [];
+ZipEntry _createFontManifest(Map<String, dynamic> manifestDescriptor, List<Map<String, dynamic>> additionalFonts) {
+ List<Map<String, dynamic>> fonts = <Map<String, dynamic>>[];
if (additionalFonts != null)
fonts.addAll(additionalFonts);
if (manifestDescriptor != null && manifestDescriptor.containsKey('fonts'))
@@ -167,7 +167,7 @@
String workingDirPath: defaultWorkingDirPath,
bool precompiledSnapshot: false
}) async {
- Map manifestDescriptor = _loadManifest(manifestPath);
+ Map<String, dynamic> manifestDescriptor = _loadManifest(manifestPath);
String assetBasePath = path.dirname(path.absolute(manifestPath));
File snapshotFile;
@@ -197,7 +197,7 @@
}
Future<int> assemble({
- Map manifestDescriptor: const {},
+ Map<String, dynamic> manifestDescriptor: const <String, dynamic>{},
File snapshotFile,
String assetBasePath: defaultAssetBasePath,
String outputPath: defaultFlxOutputPath,
@@ -244,7 +244,7 @@
if (fontManifest != null)
zipBuilder.addEntry(fontManifest);
- AsymmetricKeyPair keyPair = keyPairFromPrivateKeyFileSync(privateKeyPath);
+ AsymmetricKeyPair<PublicKey, PrivateKey> keyPair = keyPairFromPrivateKeyFileSync(privateKeyPath);
printTrace('KeyPair from $privateKeyPath: $keyPair.');
if (keyPair != null) {
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart
index 2408073..6f91575 100644
--- a/packages/flutter_tools/lib/src/ios/devices.dart
+++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -253,8 +253,8 @@
new StreamController<String>.broadcast();
Process _process;
- StreamSubscription _stdoutSubscription;
- StreamSubscription _stderrSubscription;
+ StreamSubscription<String> _stdoutSubscription;
+ StreamSubscription<String> _stderrSubscription;
Stream<String> get lines => _linesStreamController.stream;
@@ -262,13 +262,15 @@
bool get isReading => _process != null;
- Future get finished =>
- _process != null ? _process.exitCode : new Future.value(0);
+ Future<int> get finished {
+ return _process != null ? _process.exitCode : new Future<int>.value(0);
+ }
- Future start() async {
+ Future<Null> start() async {
if (_process != null) {
throw new StateError(
- '_IOSDeviceLogReader must be stopped before it can be started.');
+ '_IOSDeviceLogReader must be stopped before it can be started.'
+ );
}
_process = await runCommand(<String>[device.loggerPath]);
_stdoutSubscription =
@@ -280,10 +282,11 @@
_process.exitCode.then(_onExit);
}
- Future stop() async {
+ Future<Null> stop() async {
if (_process == null) {
throw new StateError(
- '_IOSDeviceLogReader must be started before it can be stopped.');
+ '_IOSDeviceLogReader must be started before it can be stopped.'
+ );
}
_stdoutSubscription?.cancel();
_stdoutSubscription = null;
@@ -341,7 +344,7 @@
return hostPort;
}
- Future unforward(ForwardedPort forwardedPort) async {
+ Future<Null> unforward(ForwardedPort forwardedPort) async {
// TODO(chinmaygarde): Implement.
}
}
diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart
index 0b83657..cd72155 100644
--- a/packages/flutter_tools/lib/src/ios/mac.dart
+++ b/packages/flutter_tools/lib/src/ios/mac.dart
@@ -181,7 +181,7 @@
}
}
-Future _addServicesToBundle(Directory bundle) async {
+Future<Null> _addServicesToBundle(Directory bundle) async {
List<Map<String, String>> services = [];
printTrace("Trying to resolve native pub services.");
@@ -200,7 +200,7 @@
_copyServiceDefinitionsManifest(services, manifestFile);
}
-Future _copyServiceFrameworks(List<Map<String, String>> services, Directory frameworksDirectory) async {
+Future<Null> _copyServiceFrameworks(List<Map<String, String>> services, Directory frameworksDirectory) async {
printTrace("Copying service frameworks to '${path.absolute(frameworksDirectory.path)}'.");
frameworksDirectory.createSync(recursive: true);
for (Map<String, String> service in services) {
diff --git a/packages/flutter_tools/lib/src/ios/simulators.dart b/packages/flutter_tools/lib/src/ios/simulators.dart
index da2c88e..7cf761d 100644
--- a/packages/flutter_tools/lib/src/ios/simulators.dart
+++ b/packages/flutter_tools/lib/src/ios/simulators.dart
@@ -79,7 +79,7 @@
connected = await _isAnyConnected();
if (!connected) {
printStatus('Still waiting for iOS Simulator to boot...');
- await new Future.delayed(new Duration(seconds: 1));
+ await new Future<Null>.delayed(new Duration(seconds: 1));
}
attempted++;
}
@@ -106,7 +106,7 @@
// Delete any old test devices
getDevices()
- .where((d) => d.name == _kFlutterTestDevice)
+ .where((SimDevice d) => d.name == _kFlutterTestDevice)
.forEach(_deleteDevice);
// Create new device
@@ -114,15 +114,15 @@
printTrace(args.join(' '));
runCheckedSync(args);
- return getDevices().firstWhere((d) => d.name == _kFlutterTestDevice);
+ return getDevices().firstWhere((SimDevice d) => d.name == _kFlutterTestDevice);
}
String _findSuitableDeviceType() {
List<Map<String, dynamic>> allTypes = _list(SimControlListSection.devicetypes);
List<Map<String, dynamic>> usableTypes = allTypes
- .where((info) => info['name'].startsWith('iPhone'))
+ .where((Map<String, dynamic> info) => info['name'].startsWith('iPhone'))
.toList()
- ..sort((r1, r2) => -compareIphoneVersions(r1['identifier'], r2['identifier']));
+ ..sort((Map<String, dynamic> r1, Map<String, dynamic> r2) => -compareIphoneVersions(r1['identifier'], r2['identifier']));
if (usableTypes.isEmpty) {
printError(
@@ -139,9 +139,9 @@
String _findSuitableRuntime() {
List<Map<String, dynamic>> allRuntimes = _list(SimControlListSection.runtimes);
List<Map<String, dynamic>> usableRuntimes = allRuntimes
- .where((info) => info['name'].startsWith('iOS'))
+ .where((Map<String, dynamic> info) => info['name'].startsWith('iOS'))
.toList()
- ..sort((r1, r2) => -compareIosVersions(r1['version'], r2['version']));
+ ..sort((Map<String, dynamic> r1, Map<String, dynamic> r2) => -compareIosVersions(r1['version'], r2['version']));
if (usableRuntimes.isEmpty) {
printError(
@@ -206,7 +206,7 @@
Map<String, dynamic> devicesSection = _list(SimControlListSection.devices);
for (String deviceCategory in devicesSection.keys) {
- List<dynamic> devicesData = devicesSection[deviceCategory];
+ List<Map<String, String>> devicesData = devicesSection[deviceCategory];
for (Map<String, String> data in devicesData) {
devices.add(new SimDevice(deviceCategory, data));
@@ -232,15 +232,12 @@
if (_trackDevicesControler == null) {
Timer timer;
Set<String> deviceIds = new Set<String>();
-
- _trackDevicesControler = new StreamController.broadcast(
+ _trackDevicesControler = new StreamController<List<SimDevice>>.broadcast(
onListen: () {
timer = new Timer.periodic(new Duration(seconds: 4), (Timer timer) {
List<SimDevice> devices = getConnectedDevices();
-
- if (_updateDeviceIds(devices, deviceIds)) {
+ if (_updateDeviceIds(devices, deviceIds))
_trackDevicesControler.add(devices);
- }
});
}, onCancel: () {
timer?.cancel();
@@ -290,13 +287,14 @@
/// Enumerates all data sections of `xcrun simctl list --json` command.
class SimControlListSection {
- static const devices = const SimControlListSection._('devices');
- static const devicetypes = const SimControlListSection._('devicetypes');
- static const runtimes = const SimControlListSection._('runtimes');
- static const pairs = const SimControlListSection._('pairs');
+ const SimControlListSection._(this.name);
final String name;
- const SimControlListSection._(this.name);
+
+ static const SimControlListSection devices = const SimControlListSection._('devices');
+ static const SimControlListSection devicetypes = const SimControlListSection._('devicetypes');
+ static const SimControlListSection runtimes = const SimControlListSection._('runtimes');
+ static const SimControlListSection pairs = const SimControlListSection._('pairs');
}
class SimDevice {
@@ -580,12 +578,12 @@
// We log from two logs: the device and the system log.
Process _deviceProcess;
- StreamSubscription _deviceStdoutSubscription;
- StreamSubscription _deviceStderrSubscription;
+ StreamSubscription<String> _deviceStdoutSubscription;
+ StreamSubscription<String> _deviceStderrSubscription;
Process _systemProcess;
- StreamSubscription _systemStdoutSubscription;
- StreamSubscription _systemStderrSubscription;
+ StreamSubscription<String> _systemStdoutSubscription;
+ StreamSubscription<String> _systemStderrSubscription;
Stream<String> get lines => _linesStreamController.stream;
@@ -593,13 +591,15 @@
bool get isReading => (_deviceProcess != null) && (_systemProcess != null);
- Future get finished =>
- (_deviceProcess != null) ? _deviceProcess.exitCode : new Future.value(0);
+ Future<int> get finished {
+ return (_deviceProcess != null) ? _deviceProcess.exitCode : new Future<int>.value(0);
+ }
- Future start() async {
+ Future<Null> start() async {
if (isReading) {
throw new StateError(
- '_IOSSimulatorLogReader must be stopped before it can be started.');
+ '_IOSSimulatorLogReader must be stopped before it can be started.'
+ );
}
// TODO(johnmccutchan): Add a ProcessSet abstraction that handles running
@@ -630,10 +630,11 @@
_systemProcess.exitCode.then(_onSystemExit);
}
- Future stop() async {
+ Future<Null> stop() async {
if (!isReading) {
throw new StateError(
- '_IOSSimulatorLogReader must be started before it can be stopped.');
+ '_IOSSimulatorLogReader must be started before it can be stopped.'
+ );
}
if (_deviceProcess != null) {
await _deviceProcess.kill();
@@ -774,7 +775,7 @@
return v1.compareTo(v2);
// Sorted in the least preferred first order.
- const qualifiers = const <String>['-Plus', '', 's-Plus', 's'];
+ const List<String> qualifiers = const <String>['-Plus', '', 's-Plus', 's'];
int q1 = qualifiers.indexOf(m1[2]);
int q2 = qualifiers.indexOf(m2[2]);
@@ -801,7 +802,7 @@
return hostPort;
}
- Future unforward(ForwardedPort forwardedPort) async {
+ Future<Null> unforward(ForwardedPort forwardedPort) async {
_ports.remove(forwardedPort);
}
}
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart
index 5351d1c..39eb6b3 100644
--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart
+++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart
@@ -35,11 +35,11 @@
List<BuildConfiguration> get buildConfigurations => runner.buildConfigurations;
- Future downloadToolchain() async {
+ Future<Null> downloadToolchain() async {
toolchain ??= await Toolchain.forConfigs(buildConfigurations);
}
- Future downloadApplicationPackages() async {
+ Future<Null> downloadApplicationPackages() async {
applicationPackages ??= await ApplicationPackageStore.forConfigs(buildConfigurations);
}
@@ -127,7 +127,7 @@
void addTargetOption() {
argParser.addOption('target',
abbr: 't',
- callback: (val) => _targetSpecified = true,
+ callback: (dynamic val) => _targetSpecified = true,
defaultsTo: flx.defaultMainPath,
help: 'Target app path / main entry-point file.');
_targetOptionSpecified = true;
diff --git a/packages/flutter_tools/lib/src/service_protocol.dart b/packages/flutter_tools/lib/src/service_protocol.dart
index ffbbdfa..db3bbbe 100644
--- a/packages/flutter_tools/lib/src/service_protocol.dart
+++ b/packages/flutter_tools/lib/src/service_protocol.dart
@@ -19,7 +19,7 @@
}
final DeviceLogReader _logReader;
- Completer _completer = new Completer();
+ Completer<int> _completer = new Completer<int>();
/// The [Future] returned by this function will complete when the next
/// service protocol port is found.
@@ -32,21 +32,20 @@
if (line.startsWith('Observatory listening on http://')) {
try {
RegExp portExp = new RegExp(r"\d+.\d+.\d+.\d+:(\d+)");
- var port = portExp.firstMatch(line).group(1);
+ String port = portExp.firstMatch(line).group(1);
portNumber = int.parse(port);
} catch (_) {
// Ignore errors.
}
}
- if (portNumber != 0) {
+ if (portNumber != 0)
_located(portNumber);
- }
}
void _located(int port) {
assert(_completer != null);
assert(!_completer.isCompleted);
_completer.complete(port);
- _completer = new Completer();
+ _completer = new Completer<int>();
}
}
diff --git a/packages/flutter_tools/lib/src/services.dart b/packages/flutter_tools/lib/src/services.dart
index ce08d09..552acef 100644
--- a/packages/flutter_tools/lib/src/services.dart
+++ b/packages/flutter_tools/lib/src/services.dart
@@ -25,7 +25,7 @@
/// Loads all services specified in `flutter.yaml`. Parses each service config file,
/// storing metadata in [services] and the list of jar files in [jars].
-Future parseServiceConfigs(
+Future<Null> parseServiceConfigs(
List<Map<String, String>> services, { List<File> jars }
) async {
if (!ArtifactStore.isPackageRootValid) {
diff --git a/packages/flutter_tools/lib/src/test/flutter_platform.dart b/packages/flutter_tools/lib/src/test/flutter_platform.dart
index 81d0c4b..61cbba0 100644
--- a/packages/flutter_tools/lib/src/test/flutter_platform.dart
+++ b/packages/flutter_tools/lib/src/test/flutter_platform.dart
@@ -55,11 +55,11 @@
}
class FlutterPlatform extends PlatformPlugin {
- StreamChannel loadChannel(String mainPath, TestPlatform platform) {
+ StreamChannel<String> loadChannel(String mainPath, TestPlatform platform) {
return StreamChannelCompleter.fromFuture(_startTest(mainPath));
}
- Future<StreamChannel> _startTest(String mainPath) async {
+ Future<StreamChannel<String>> _startTest(String mainPath) async {
_ServerInfo info = await _startServer();
Directory tempDir = Directory.systemTemp.createTempSync(
'dart_test_listener');
@@ -108,19 +108,19 @@
try {
WebSocket socket = await info.socket;
- StreamChannel channel = new StreamChannel(socket.map(JSON.decode), socket);
+ StreamChannel<String> channel = new StreamChannel<String>(socket.map(JSON.decode), socket);
return channel.transformStream(
- new StreamTransformer.fromHandlers(
- handleDone: (sink) {
+ new StreamTransformer<String, String>.fromHandlers(
+ handleDone: (EventSink<String> sink) {
finalize();
sink.close();
}
)
- ).transformSink(new StreamSinkTransformer.fromHandlers(
- handleData: (data, StreamSink sink) {
+ ).transformSink(new StreamSinkTransformer<String, String>.fromHandlers(
+ handleData: (String data, StreamSink<String> sink) {
sink.add(JSON.encode(data));
},
- handleDone: (sink) {
+ handleDone: (EventSink<String> sink) {
finalize();
sink.close();
}
diff --git a/packages/flutter_tools/test/analyze_test.dart b/packages/flutter_tools/test/analyze_test.dart
index bddf95f..2074cb1 100644
--- a/packages/flutter_tools/test/analyze_test.dart
+++ b/packages/flutter_tools/test/analyze_test.dart
@@ -36,7 +36,7 @@
server = new AnalysisServer(dartSdkPath, <String>[tempDir.path]);
int errorCount = 0;
- Future onDone = server.onAnalyzing.where((bool analyzing) => analyzing == false).first;
+ Future<bool> onDone = server.onAnalyzing.where((bool analyzing) => analyzing == false).first;
server.onErrors.listen((FileAnalysisErrors errors) => errorCount += errors.errors.length);
await server.start();
@@ -55,7 +55,7 @@
server = new AnalysisServer(dartSdkPath, <String>[tempDir.path]);
int errorCount = 0;
- Future onDone = server.onAnalyzing.where((bool analyzing) => analyzing == false).first;
+ Future<bool> onDone = server.onAnalyzing.where((bool analyzing) => analyzing == false).first;
server.onErrors.listen((FileAnalysisErrors errors) => errorCount += errors.errors.length);
await server.start();
diff --git a/packages/flutter_tools/test/daemon_test.dart b/packages/flutter_tools/test/daemon_test.dart
index fa34531..793f0b9 100644
--- a/packages/flutter_tools/test/daemon_test.dart
+++ b/packages/flutter_tools/test/daemon_test.dart
@@ -45,15 +45,15 @@
});
_testUsingContext('daemon.version', () async {
- StreamController<Map<String, dynamic>> commands = new StreamController();
- StreamController<Map<String, dynamic>> responses = new StreamController();
+ StreamController<Map<String, dynamic>> commands = new StreamController<Map<String, dynamic>>();
+ StreamController<Map<String, dynamic>> responses = new StreamController<Map<String, dynamic>>();
daemon = new Daemon(
commands.stream,
(Map<String, dynamic> result) => responses.add(result),
notifyingLogger: notifyingLogger
);
- commands.add({'id': 0, 'method': 'daemon.version'});
- Map response = await responses.stream.where(_notEvent).first;
+ commands.add(<String, dynamic>{'id': 0, 'method': 'daemon.version'});
+ Map<String, dynamic> response = await responses.stream.where(_notEvent).first;
expect(response['id'], 0);
expect(response['result'], isNotEmpty);
expect(response['result'] is String, true);
@@ -61,8 +61,8 @@
_testUsingContext('daemon.logMessage', () {
return appContext.runInZone(() async {
- StreamController<Map<String, dynamic>> commands = new StreamController();
- StreamController<Map<String, dynamic>> responses = new StreamController();
+ StreamController<Map<String, dynamic>> commands = new StreamController<Map<String, dynamic>>();
+ StreamController<Map<String, dynamic>> responses = new StreamController<Map<String, dynamic>>();
daemon = new Daemon(
commands.stream,
(Map<String, dynamic> result) => responses.add(result),
@@ -81,8 +81,8 @@
});
_testUsingContext('daemon.shutdown', () async {
- StreamController<Map<String, dynamic>> commands = new StreamController();
- StreamController<Map<String, dynamic>> responses = new StreamController();
+ StreamController<Map<String, dynamic>> commands = new StreamController<Map<String, dynamic>>();
+ StreamController<Map<String, dynamic>> responses = new StreamController<Map<String, dynamic>>();
daemon = new Daemon(
commands.stream,
(Map<String, dynamic> result) => responses.add(result),
@@ -98,8 +98,8 @@
DaemonCommand command = new DaemonCommand();
applyMocksToCommand(command);
- StreamController<Map<String, dynamic>> commands = new StreamController();
- StreamController<Map<String, dynamic>> responses = new StreamController();
+ StreamController<Map<String, dynamic>> commands = new StreamController<Map<String, dynamic>>();
+ StreamController<Map<String, dynamic>> responses = new StreamController<Map<String, dynamic>>();
daemon = new Daemon(
commands.stream,
(Map<String, dynamic> result) => responses.add(result),
@@ -108,21 +108,21 @@
);
commands.add(<String, dynamic>{ 'id': 0, 'method': 'app.stop' });
- Map response = await responses.stream.where(_notEvent).first;
+ Map<String, dynamic> response = await responses.stream.where(_notEvent).first;
expect(response['id'], 0);
expect(response['error'], contains('deviceId is required'));
});
_testUsingContext('device.getDevices', () async {
- StreamController<Map<String, dynamic>> commands = new StreamController();
- StreamController<Map<String, dynamic>> responses = new StreamController();
+ StreamController<Map<String, dynamic>> commands = new StreamController<Map<String, dynamic>>();
+ StreamController<Map<String, dynamic>> responses = new StreamController<Map<String, dynamic>>();
daemon = new Daemon(
commands.stream,
(Map<String, dynamic> result) => responses.add(result),
notifyingLogger: notifyingLogger
);
commands.add({'id': 0, 'method': 'device.getDevices'});
- Map response = await responses.stream.where(_notEvent).first;
+ Map<String, dynamic> response = await responses.stream.where(_notEvent).first;
expect(response['id'], 0);
expect(response['result'], isList);
});
diff --git a/packages/flutter_tools/test/service_protocol_test.dart b/packages/flutter_tools/test/service_protocol_test.dart
index 3498b5c..5f5d5c6 100644
--- a/packages/flutter_tools/test/service_protocol_test.dart
+++ b/packages/flutter_tools/test/service_protocol_test.dart
@@ -16,7 +16,7 @@
ServiceProtocolDiscovery discoverer =
new ServiceProtocolDiscovery(logReader);
// Get next port future.
- Future nextPort = discoverer.nextPort();
+ Future<int> nextPort = discoverer.nextPort();
expect(nextPort, isNotNull);
// Inject some lines.
logReader.addLine('HELLO WORLD');
diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart
index 3ede26c..db5283c 100644
--- a/packages/flutter_tools/test/src/context.dart
+++ b/packages/flutter_tools/test/src/context.dart
@@ -72,11 +72,11 @@
String specifiedDeviceId;
bool get hasSpecifiedDeviceId => specifiedDeviceId != null;
- Future<List<Device>> getAllConnectedDevices() => new Future.value(devices);
+ Future<List<Device>> getAllConnectedDevices() => new Future<List<Device>>.value(devices);
Future<Device> getDeviceById(String deviceId) {
Device device = devices.firstWhere((Device device) => device.id == deviceId, orElse: () => null);
- return new Future.value(device);
+ return new Future<Device>.value(device);
}
Future<List<Device>> getDevices() async {
diff --git a/packages/flutter_tools/test/src/mocks.dart b/packages/flutter_tools/test/src/mocks.dart
index bbb09dd..62d6c36 100644
--- a/packages/flutter_tools/test/src/mocks.dart
+++ b/packages/flutter_tools/test/src/mocks.dart
@@ -52,7 +52,7 @@
final StreamController<String> _linesStreamController =
new StreamController<String>.broadcast();
- final Completer _finishedCompleter = new Completer();
+ final Completer<int> _finishedCompleter = new Completer<int>();
Stream<String> get lines => _linesStreamController.stream;
@@ -62,21 +62,20 @@
bool _started = false;
- Future start() {
+ Future<Null> start() async {
assert(!_started);
_started = true;
- return new Future.value(this);
}
bool get isReading => _started;
- Future stop() {
+ Future<Null> stop() {
assert(_started);
_started = false;
- return new Future.value(this);
+ return new Future<Null>.value();
}
- Future get finished => _finishedCompleter.future;
+ Future<int> get finished => _finishedCompleter.future;
}
void applyMocksToCommand(FlutterCommand command) {
diff --git a/packages/flutter_tools/test/stop_test.dart b/packages/flutter_tools/test/stop_test.dart
index d3c5f31..0e3fc23 100644
--- a/packages/flutter_tools/test/stop_test.dart
+++ b/packages/flutter_tools/test/stop_test.dart
@@ -18,7 +18,7 @@
StopCommand command = new StopCommand();
applyMocksToCommand(command);
MockAndroidDevice device = new MockAndroidDevice();
- when(device.stopApp(any)).thenReturn(new Future.value(true));
+ when(device.stopApp(any)).thenReturn(new Future<bool>.value(true));
testDeviceManager.addDevice(device);
return createTestCommandRunner(command).run(['stop']).then((int code) {
expect(code, equals(0));
@@ -29,7 +29,7 @@
StopCommand command = new StopCommand();
applyMocksToCommand(command);
MockIOSDevice device = new MockIOSDevice();
- when(device.stopApp(any)).thenReturn(new Future.value(true));
+ when(device.stopApp(any)).thenReturn(new Future<bool>.value(true));
testDeviceManager.addDevice(device);
return createTestCommandRunner(command).run(['stop']).then((int code) {