promptString static method

String promptString(
  1. String message, {
  2. String? defaultValue,
  3. bool validator(
    1. String
    )?,
})

Prompts the user for a text string.

Implementation

static String promptString(String message, {String? defaultValue, bool Function(String)? validator}) {
  while (true) {
    final defaultSuffix = defaultValue != null ? ' ${Logger.gray}($defaultValue)${Logger.reset}' : '';
    stdout.write('${Logger.green}?${Logger.reset} ${Logger.bold}$message${Logger.reset}$defaultSuffix: ');
    final input = stdin.readLineSync(encoding: utf8)?.trim() ?? '';

    if (input.isEmpty && defaultValue != null) {
      return defaultValue;
    }

    if (input.isEmpty) {
      Logger.warning('This field is required.');
      continue;
    }

    if (validator != null && !validator(input)) {
      continue;
    }

    return input;
  }
}