Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart中的简单命令行应用程序I/O_Dart_Keyboard Events_Dart Io - Fatal编程技术网

Dart中的简单命令行应用程序I/O

Dart中的简单命令行应用程序I/O,dart,keyboard-events,dart-io,Dart,Keyboard Events,Dart Io,有没有办法从用户那里获取单字符(整数)键盘输入,并将其存储到Dart命令行应用程序中的变量中?我试过这样的方法: Stream cmdLine=stdin .transform(新的StringDecoder()) .transform(新的LineTransformer()); StreamSubscription cmdSubscription=cmdLine.listen( (行)=>(选项=行); cmdSubscription.cancel();); 试图将键盘输入存储到变量“cho

有没有办法从用户那里获取单字符(整数)键盘输入,并将其存储到Dart命令行应用程序中的变量中?我试过这样的方法:

Stream cmdLine=stdin
.transform(新的StringDecoder())
.transform(新的LineTransformer());
StreamSubscription cmdSubscription=cmdLine.listen(
(行)=>(选项=行);
cmdSubscription.cancel(););

试图将键盘输入存储到变量“choice”和此代码的许多细微变化中,但无法使其工作。

当前,一次只能读取整行数据,即按下enter键后

这是星星

更新:

函数的作用是:等待用户输入一行内容,并将其作为字符串返回

导入'dart:async';
导入“dart:io”;
main(){
打印('1+1=…');
readLine()。然后((行){
打印(line.trim()='2'?'Yup!':'Nope:(');
});
}
未来读线(){
var completer=new completer();
var输入=标准输入
.transform(新的StringDecoder())
.transform(新的LineTransformer());
var-subs;
subs=输入。侦听((行){
完成器。完成(行);
subs.cancel();
});
返回completer.future;
}

这对我来说没问题,只要让用户键入1或2,然后输入即可;我添加了一个这样做的示例-如果它坏了,请告诉我一声。Hhmm试图使用该函数,但代码似乎跳过了readLine调用readLine()。然后((s)在该调用中,我试图将全局变量choice设置为s,因此我有:readLine()。然后((s){choice=s;});而(choice==0){}print('您输入了$choice');尝试使用while循环强制等待输入,但在输入任何内容并按enter键后,它始终不会到达print语句。如果删除while循环,它只会在不等待输入的情况下点击打印。我的实现是否不正确?忘了提及我已初始化:“var choice=0;”前面在不同的地方测试print语句,我看到readLine调用中的“choice=s;”部分代码从未到达,我认为subs=input.listen((line){completer.complete(line);subs.cancel();});也从未运行过