Flutter `emulator launch` crash running in dart-2-mode (#19454)

* Only printError on our simple messages

Any other type is a real error that should be a normal crash (to get a proper error log).

See #19453.

* Add toList() to convert Iterable<String> -> List<String>

This code previously throw in Dart-2 mode.

Fixes #19453.

* Move getSimulatorPath into Xcode

* Add a test that we tried to launch the simulator

* Remove unused import
diff --git a/packages/flutter_tools/lib/src/ios/ios_emulators.dart b/packages/flutter_tools/lib/src/ios/ios_emulators.dart
index 0916a3c..f9c3a57 100644
--- a/packages/flutter_tools/lib/src/ios/ios_emulators.dart
+++ b/packages/flutter_tools/lib/src/ios/ios_emulators.dart
@@ -4,7 +4,6 @@
 
 import 'dart:async';
 
-import '../base/file_system.dart';
 import '../base/platform.dart';
 import '../base/process.dart';
 import '../emulator.dart';
@@ -40,7 +39,8 @@
     Future<bool> launchSimulator(List<String> additionalArgs) async {
       final List<String> args = <String>['open']
           .followedBy(additionalArgs)
-          .followedBy(<String>['-a', getSimulatorPath()]);
+          .followedBy(<String>['-a', xcode.getSimulatorPath()])
+          .toList();
 
       final RunResult launchResult = await runAsync(args);
       if (launchResult.exitCode != 0) {
@@ -62,22 +62,10 @@
 
 /// Return the list of iOS Simulators (there can only be zero or one).
 List<IOSEmulator> getEmulators() {
-  final String simulatorPath = getSimulatorPath();
+  final String simulatorPath = xcode.getSimulatorPath();
   if (simulatorPath == null) {
     return <IOSEmulator>[];
   }
 
   return <IOSEmulator>[new IOSEmulator('apple_ios_simulator')];
 }
-
-String getSimulatorPath() {
-  if (xcode.xcodeSelectPath == null)
-    return null;
-  final List<String> searchPaths = <String>[
-    fs.path.join(xcode.xcodeSelectPath, 'Applications', 'Simulator.app'),
-  ];
-  return searchPaths.where((String p) => p != null).firstWhere(
-        (String p) => fs.directory(p).existsSync(),
-        orElse: () => null,
-      );
-}
diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart
index d5a2c6b..85d4d87 100644
--- a/packages/flutter_tools/lib/src/ios/mac.dart
+++ b/packages/flutter_tools/lib/src/ios/mac.dart
@@ -167,6 +167,18 @@
   Future<RunResult> clang(List<String> args) {
     return runCheckedAsync(<String>['xcrun', 'clang']..addAll(args));
   }
+
+  String getSimulatorPath() {
+    if (xcodeSelectPath == null)
+      return null;
+    final List<String> searchPaths = <String>[
+      fs.path.join(xcodeSelectPath, 'Applications', 'Simulator.app'),
+    ];
+    return searchPaths.where((String p) => p != null).firstWhere(
+      (String p) => fs.directory(p).existsSync(),
+      orElse: () => null,
+    );
+  }
 }
 
 Future<XcodeBuildResult> buildXcodeProject({