askOptionsWithInput static method

String askOptionsWithInput(
  1. String title,
  2. List<Map<String, dynamic>> options
)

Implementation

static String askOptionsWithInput(
  String title,
  List<Map<String, dynamic>> options,
) {
  printBold(title);

  for (var i = 0; i < options.length; i++) {
    printText('${options[i]['value']}. ${options[i]['label']}');
  }

  stdout.write('\nYour choice ? ');
  String input = stdin.readLineSync() ?? '';

  List<String> availableOptions =
      options.map((e) => e['value'].toString()).toList();

  if (availableOptions.contains(input) == false) {
    askOptionsWithInput(title, options);
  }

  for (var i = 0; i < options.length; i++) {
    if (options[i]['value'] == input) {
      options[i]['action']();
      break;
    }
  }

  return input;
}