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

时间:2013-05-01 02:23:56

标签: dart keyboard-events dart-io

有没有办法从用户那里获取单个字符(整数)键盘输入并将它们存储到Dart命令行应用程序中的变量?我尝试过类似的东西:

Stream cmdLine = stdin
  .transform(new StringDecoder())
  .transform(new LineTransformer());

StreamSubscription cmdSubscription = cmdLine.listen(
  (line) => (choice = line);
  cmdSubscription.cancel(););

尝试将键盘输入存储到变量'choice'中,并且此代码的​​许多细微变化但无法使其工作。

1 个答案:

答案 0 :(得分:2)

目前,您一次只能读取整行 - 即按下输入后。

将此issue加注星标。

<强>更新

readLine()函数等待来自用户的一行输入并将其作为字符串返回。

import 'dart:async';
import 'dart:io';

main() {
    print('1 + 1 = ...');
    readLine().then((line) {
        print(line.trim() == '2' ? 'Yup!' : 'Nope :(');
    });
}

Future<String> readLine() {
    var completer = new Completer<String>();

    var input = stdin
        .transform(new StringDecoder())
        .transform(new LineTransformer());

    var subs;
    subs = input.listen((line) {
        completer.complete(line);
        subs.cancel();
    });

    return completer.future;
}