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 emulatorPath = await _findEmulatorPath();
    final emulators = await _listEmulators(emulatorPath);

    if (emulators.isEmpty) {
      print('No Android emulators found. '
          'Please create one using Android Studio.');
      return;
    }

    _displayEmulators(emulators);
    final selectedIndex = await _getValidEmulatorSelection(emulators.length);

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

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