requestInput method
(String, NatrixMount)
requestInput({
- NatrixText prefix = const NatrixText.empty(),
- NatrixColor inputForegroundColor = .none,
- NatrixColor inputBackgroundColor = .none,
- NatrixStyle inputStyle = .none,
- bool hideInput = false,
Implementation
(String, NatrixMount) requestInput({
final NatrixText prefix = const NatrixText.empty(),
NatrixColor inputForegroundColor = .none,
NatrixColor inputBackgroundColor = .none,
NatrixStyle inputStyle = .none,
final bool hideInput = false,
}) {
if (!prefix.valid()) {
throw Exception(_invalidMessage(prefix));
}
final bool initEcho = io.stdin.echoMode;
final bool initLine = io.stdin.lineMode;
if (hideInput) {
io.stdin.echoMode = false;
io.stdin.lineMode = true;
}
final NatrixMount mount = NatrixMount(
position: _totalLinesWritten++,
output: NatrixStdoutSink.stdout,
);
mount.output.sink.write(
"${prefix.ansi}"
"${inputForegroundColor.ansiForegroundSequence}"
"${inputBackgroundColor.ansiBackgroundSequence}"
"${inputStyle.ansiStartSequence}",
);
final String input = io.stdin.readLineSync() ?? "";
mount.output.sink.write(
"${inputStyle.ansiResetSequence}"
"${inputBackgroundColor.ansiResetBackgroundSequence}"
"${inputForegroundColor.ansiResetForegroundSequence}",
);
if (hideInput) {
io.stdin.echoMode = initEcho;
io.stdin.lineMode = initLine;
}
return (input, mount);
}