在测试我编写的Dart预提交git钩子脚本时,使用提示时,我可以将stdin输入作为输入。但是,当在提交时通过git运行它时,它会通过输入调用运行,而不会提示用户输入。显然,某些语言有一种解决方法,可以通过Callingexec < /dev/tty
将标准输入分配给键盘,但是Dart呢?
您可以直接从/ dev / tty作为文件读取,而不是重定向stdin:
import 'dart:convert';
import 'dart:io';
void main() async {
print('What is your name: ');
final name = await getUserInput();
print('Hello! Your name is $name');
}
Future<String> getUserInput() async =>
File(Platform.isWindows ? r'conIN$' : '/dev/tty')
.openRead()
.transform(utf8.decoder)
.transform(const LineSplitter())
.first;
我找到了conIN $的以下文档,该文档指示这始终指向Windows上的控制台输入:https ://docs.microsoft.com/zh-cn/windows/console/console-handles
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句