Future'sとCompletersを使用して、作業を連鎖させることができます。次のfutureは、プロセスからの「ls」コマンドの結果を返します。
Future<String> fetch(String dir) {
final completer = new Completer();
Process process = new Process.start('ls', [dir]);
process.exitHandler = (int exitCode) {
StringInputStream stringStream = new StringInputStream(process.stdout);
stringStream.dataHandler = () {
String content = stringStream.read();
completer.complete(content);
process.close();
};
};
process.errorHandler = (var error) {
completer.completeException(error);
return true;
};
return completer.future;
};
次に、次のようにチェーンします。
fetch('/')。then((val)=> fetch( "/ usr")。then((val)=> fetch( "/ tmp")));
最もきれいな解決策ではありませんが、これは私が今やっているものです。