Windows中Dart代码的奇怪行为

时间:2014-02-21 09:06:13

标签: windows dart dart-io

我正在研究的Dart项目需要多个实例打印语句而不需要换行。据我了解,在飞镖中没有新线的印刷可以通过

实现
stdout.write("string");

一切都很好,但是当我尝试编写与此类似的代码时:

stdout.write("Enter a number: ");
var a = stdin.readLineSync(encoding: SYSTEM_ENCODING);
stdout.write("Enter another number: ");
var b = stdin.readLineSync(encoding: SYSTEM_ENCODING);
stdout.write(a + b);

这在非Windows系统上运行完美,但在Windows(32位和64位)中,我正在打印的第二条消息没有显示,程序直接进入stdin.readLineSync()调用并等待输入。在我输入后,显示消息。我在这里遇到过类似的帖子,说stdout.write()可能是异步的,但奇怪的是这个代码在Linux上运行得非常好并且是同步的。

我的项目非常需要同步执行,上述问题可以通过Futures解决,但会失去同步执行。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您是否尝试过stdout.flush() before stdin.readLineSync()

答案 1 :(得分:0)

Stdout在许多平台上都不会刷新直线字符。我认为Windows也是如此。

目前,该API未公开强制fflush stdout的方法。

我建议您在http://dartbug.com/new提交功能请求。