我询问用户输入我的命令行(镖:IO)的应用程序。 之后,我从用户那里得到我的回答,我想从退订Stream
。 然后,后来,我可能要听一遍(但具有不同的听众,所以pause()
和resume()
不帮我)。
在启动时,我有这样的:
cmdLine = stdin
.transform(new StringDecoder());
后来,当我想收集输入:
cmdLineSubscription = cmdLine.listen((String line) {
try {
int optionNumber = int.parse(line);
if (optionNumber >= 1 && optionNumber <= choiceList.length) {
cmdLineSubscription.cancel();
completer.complete(choiceList[optionNumber - 1].hash);
} else {
throw new FormatException("Number outside the range.");
}
} on FormatException catch (e) {
print("Input a number between 1 and ${choiceList.length}, please.");
}
});
这如预期运作,但它留下stdin
的程序执行月底开放。 与以前的API,关闭stdin
是作为调用容易stdin.close()
但随着新的API, stdin
是一个Stream
,而那些没有close
方法。
我觉得我在做什么正在关闭(读:从退订),将转化流,但留下的原始(标准输入)流开放。
我对么? 如果是这样,我怎么能关闭底层stdin
的程序退出流?