adjust declared types to work with dart 2 typing at runtime (#19007) * adjust declared types to work with dart 2 typing at runtime * review comments * update packages/flutter_tools/lib/src/ios/simulators.dart
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 1be0bd7..d2c05d8 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -17,6 +17,7 @@ import 'base/common.dart'; import 'base/file_system.dart'; import 'base/io.dart' as io; +import 'base/utils.dart'; import 'globals.dart'; import 'vmservice_record_replay.dart'; @@ -256,7 +257,10 @@ /// Whether our connection to the VM service has been closed; bool get isClosed => _peer.isClosed; - Future<Null> get done => _peer.done; + + Future<Null> get done async { + await _peer.done; + } // Events Future<Stream<ServiceEvent>> get onDebugEvent => onEvent('Debug'); @@ -284,7 +288,7 @@ Map<String, dynamic> params, ) { return Future.any(<Future<Map<String, dynamic>>>[ - _peer.sendRequest(method, params), + _peer.sendRequest(method, params).then<Map<String, dynamic>>(castStringKeyedMap), _connectionError.future, ]); } @@ -334,8 +338,8 @@ } /// Reloads the VM. - Future<VM> getVM() { - return _vm.reload(); + Future<VM> getVM() async { + return await _vm.reload(); } Future<Null> waitForViews({int attempts = 5, int attemptSeconds = 1}) async { @@ -683,7 +687,7 @@ _embedder = map['_embedder']; // Remove any isolates which are now dead from the isolate cache. - _removeDeadIsolates(map['isolates']); + _removeDeadIsolates(map['isolates'].cast<Isolate>()); } final Map<String, ServiceObject> _cache = <String,ServiceObject>{}; @@ -851,7 +855,7 @@ } /// Invoke the RPC and return a [ServiceObject] response. - Future<ServiceObject> invokeRpc(String method, { + Future<T> invokeRpc<T extends ServiceObject>(String method, { Map<String, dynamic> params = const <String, dynamic>{}, Duration timeout, }) async { @@ -922,13 +926,13 @@ Uri packages, Uri assetsDirectory) { // TODO(goderbauer): Transfer Uri (instead of file path) when remote end supports it. - return invokeRpc('_flutter.runInView', - params: <String, dynamic> { - 'viewId': viewId, - 'mainScript': main.toFilePath(windows: false), - 'packagesFile': packages.toFilePath(windows: false), - 'assetDirectory': assetsDirectory.toFilePath(windows: false) - }); + return invokeRpc<ServiceMap>('_flutter.runInView', + params: <String, dynamic> { + 'viewId': viewId, + 'mainScript': main.toFilePath(windows: false), + 'packagesFile': packages.toFilePath(windows: false), + 'assetDirectory': assetsDirectory.toFilePath(windows: false) + }); } Future<Map<String, dynamic>> clearVMTimeline() { @@ -1324,7 +1328,7 @@ } Future<String> flutterPlatformOverride([String platform]) async { - final Map<String, String> result = await invokeFlutterExtensionRpcRaw( + final Map<String, dynamic> result = await invokeFlutterExtensionRpcRaw( 'ext.flutter.platformOverride', params: platform != null ? <String, dynamic>{ 'value': platform } : <String, String>{}, timeout: const Duration(seconds: 5),