[英]Weird behavior of Dart code in Windows
我正在處理的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.flush()
before stdin.readLineSync()
嘗試before stdin.readLineSync()
嗎?
在許多平台上,Stdout不會刷新,直到換行符為止。 我認為Windows也是如此。
目前,該API尚未提供在stdout
上強制使用fflush
的方法。
我建議您在http://dartbug.com/new上提出功能請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.