从Dart控制台读取多个输入

时间:2012-09-28 08:59:01

标签: dart dart-io

我想在Dart服务器应用程序中从控制台读取不同的数据,例如:

forename:用户输入并输入
 姓氏:用户输入并输入
 年龄:用户输入并输入

以下代码有效,但仅适用于1个输入项:

var stream = new StringInputStream(stdin);
stream.onData = () {
    voornaam = stream.readLine();
};

但我无法让它适用于多个项目。 在Dart有一个简单的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

由于您使用的是StringInputStream而不仅仅是标准InputStream,并且因为您正在寻找文字。除非有特殊原因,否则我建议在onLine上使用onData处理程序。在数据上,基本上会尝试“流式传输”信息,因为它不会立即调用,而是在新行上调用。尝试类似下面的内容(注意,不是完整的代码,缺少正确的错误处理等。)

#import('dart:io');

main() {
  var stream = new StringInputStream(stdin);
  stream.onLine = () {
    var str = stream.readLine().trim();
    print(str.toUpperCase());
    if(str == 'EXIT') exit(0);
  };
}

另外需要注意的一点是,如果您曾经使用数据流并使用onData处理程序,那么建议您使用read方法,而不是readLine方法。检索内容的方法,再次由于onData的性质而不是等待在被调用之前接收整行文本。

答案 1 :(得分:0)

import 'dart:io';

void main() {
  print('-----welcome-----');
  print('what is your firstname');
  var fname = stdin.readLineSync();
  print('what is your lastname');
  var lname = stdin.readLineSync();
  print('what is your age');
  int age = int.parse(stdin.readLineSync());
  int left = 100 - age;
  print('your name is $fname $lname  and you are  $age years');
}