簡體   English   中英

Windows中Dart代碼的怪異行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM