ask method

  1. @override
dynamic ask()
override

Implementation

@override
dynamic ask() {
  while (true) {
    print('\n$text');
    for (var i = 0; i < choices.length; i++) {
      print('  [${i + 1}] ${choices[i]}');
    }
    stdout.write('Select option (1-${choices.length}): ');
    final input = stdin.readLineSync()?.trim();

    if (input == null || input.isEmpty) {
      print('Input cannot be empty. Please try again.');
      continue;
    }

    final index = int.tryParse(input);
    if (index == null || index < 1 || index > choices.length) {
      print('Invalid option. Please enter a number between 1 and ${choices.length}.');
      continue;
    }

    return choices[index - 1];
  }
}