我想在Dart服务器应用程序中从控制台读取不同的数据,例如:
forename:用户输入并输入
姓氏:用户输入并输入
年龄:用户输入并输入
以下代码有效,但仅适用于1个输入项:
var stream = new StringInputStream(stdin);
stream.onData = () {
voornaam = stream.readLine();
};
但我无法让它适用于多个项目。 在Dart有一个简单的方法吗?
谢谢!
答案 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');
}