run method

  1. @override
FutureOr run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
FutureOr run() async {
  final shouldRunApp = argResults?['run'] ?? false;

  try {
    final simulatorPath = await _findSimulatorPath();
    final simulators = await _listSimulators(simulatorPath);

    if (simulators.isEmpty) {
      print('No iOS simulators found. '
          'Please create one using Xcode.');
      return;
    }

    _displaySimulators(simulators);
    final selectedIndex =
        await _getValidSimulatorSelection(simulators.length);

    if (selectedIndex == null) {
      print('Invalid selection. Operation cancelled.');
      return;
    }

    print('\nLaunching simulator: ${simulators[selectedIndex]}...');
    await _launchSimulator(simulators[selectedIndex], shouldRunApp);
  } catch (e) {
    print('Error: ${e.toString()}');
    exit(1);
  }
}