windows - Windows中Dart代码的怪异行为

标签 windows dart dart-io

我正在处理的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/

相关文章:

javascript - Windows 上 package.json 中位于外部的 'npm run' 脚本?

sockets - Dart UDP 客户端/服务器

dart - 如何在 Dart 中获取任何包的根路径

c++ - 文件下载器建议

python - 如何在 Windows 上以提升的权限运行脚本

windows - 找出模式以便在编译的程序中找到变量

ios - 从 Flutter/Dart 检测 iOS13 深色模式是否启用

dart - Web服务器将数据与文件一起发送

flutter - Dart中的日期格式,其中包括GMT

dart - 使用 Dart,如何使用 Future 正确返回 HttpResponse