text method

Future<String?> text(
  1. String message, {
  2. String? defaultValue,
})

Asks for one line of text.

Returns null when the prompt is cancelled or the input stream ends. When defaultValue is provided, an empty submitted line returns it.

Implementation

Future<String?> text(String message, {String? defaultValue}) async {
  if (_closed) {
    throw StateError('Prompt is closed.');
  }
  if (_asking) {
    throw StateError('Prompt is already asking.');
  }

  _asking = true;
  try {
    final answer = await _readline.readLine(
      prompt: _formatPrompt(message, defaultValue: defaultValue),
    );
    if (answer == null) return null;
    if (answer.isEmpty && defaultValue != null) {
      return defaultValue;
    }
    return answer;
  } finally {
    _asking = false;
  }
}