我正在处理的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上运行得很好并且以同步方式运行。
在我的项目中非常需要同步执行,上述问题可以通过Future解决,但会丢失同步执行。
任何帮助深表感谢。
最佳答案
在许多平台上,Stdout不会刷新,直到换行符为止。我认为Windows也是如此。
当前,该API尚未公开在fflush
上强制使用stdout
的方法。
我建议您通过http://dartbug.com/new提交功能请求。
关于windows - Windows中Dart代码的怪异行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21929812/