在PowerShell中运行Dart程序回车键无响应,需按Ctrl+D结束输入
问题解决:Dart程序回车键无法结束输入,需按Ctrl+D才能完成
问题描述
运行以下Dart代码时,输入内容后按回车键无法触发输入结束,必须先按Ctrl+D再回车才能完成流程,该问题在Windows 11的PowerShell、命令提示符中均出现:
import 'dart:io'; void main() { stdout.write("Enter your name:"); String? name = stdin.readLineSync(); print("Hello $name"); }
示例异常输出:
Enter your name:fred ^D Hello fred
解决方案
强制刷新输出缓冲区
stdout.write()默认采用行缓冲模式,在Windows环境下可能导致提示信息未即时输出,干扰输入结束信号的识别。在stdout.write()后添加stdout.flush()强制刷新缓冲区,确保提示信息立即显示,回车键即可正常触发输入结束:import 'dart:io'; void main() { stdout.write("Enter your name:"); stdout.flush(); // 强制刷新输出缓冲区 String? name = stdin.readLineSync(); print("Hello $name"); }升级Dart SDK至最新稳定版
部分旧版本Dart SDK在Windows终端环境下存在标准输入处理的兼容性bug,升级到最新稳定版可修复此类问题。打开终端执行以下命令完成升级:dart pub global activate dart_updater dart_updater update调整终端输入模式
若上述方法无效,可尝试关闭Windows终端的快速编辑模式:- 右键终端标题栏,选择「属性」
- 切换到「选项」标签页,取消勾选「快速编辑模式」
- 点击「确定」保存设置后重启终端
内容的提问来源于stack exchange,提问作者LorenBoyle
相关产品推荐
相关产品推荐

