1

我正在处理的 Dart 项目需要多个实例打印语句而无需换行。据我了解,可以通过以下方式实现在 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 解决,但会丢失同步执行。

任何帮助深表感谢。

4

2 回答 2

0

你试过stdout.flush() before stdin.readLineSync()吗?

于 2014-02-21T09:10:36.787 回答
0

在许多平台上,标准输出直到换行符才会刷新。我认为这对于 Windows 也是如此。

目前,API 没有公开强制fflushon的方法stdout

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

于 2014-03-17T12:30:01.773 回答