2013-05-01 51 views
2

有沒有一種方法可以從用戶處獲取單字符(整數)鍵盤輸入並將它們存儲到Dart命令行應用程序中的變量中?我已經試過類似:飛鏢中的簡單命令行應用程序I/O

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

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

在試圖鍵盤輸入存儲到變量「選擇」這個代碼的許多細微的變化,但不能讓它開始工作。

回答

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; 
} 
+0

這將是我沒意見,只是爲了尋找用戶鍵入1或2然後輸入; d – Instinct 2013-05-01 05:39:28

+0

我添加了做這樣的例子 - 給我留言,如果是壞了。 – 2013-05-01 05:57:25

+0

Hhmm試圖使用函數,但代碼似乎跳過readLine調用readLine()。然後((s)沒有等待輸入。在該調用中,我試圖設置一個全局變量選項等於s,所以我有: 的readLine(),然後((S){ 選擇= S; }); 而(選擇== 0){ } 打印( '您輸入$選擇'); 試圖使用while循環強制等待輸入,但仍然輸入任何內容後按下輸入它永遠不會結束達到打印語句。如果我刪除while循環,它只是在不等待輸入的情況下打印出來。我是否正確實施? – Instinct 2013-05-01 19:31:14