choose method
Implementation
Future<dynamic> choose() {
var buff = StringBuffer();
var i = -1;
for (var choice in choices) {
i++;
buff.writeln(formatter(choice, i + 1));
}
buff.write(message);
var completer = Completer();
var process;
process = (String input) {
var result = _parseInteger(input);
if (result == null) {
var exists = choices
.map((it) => it.toString().trim().toLowerCase())
.contains(input.trim().toLowerCase());
if (exists) {
var val = choices.firstWhere((it) {
return it.toString().trim().toLowerCase() ==
input.trim().toLowerCase();
});
completer.complete(val);
return;
}
}
var choice;
try {
if (result == null) {
Prompter(buff.toString()).prompt().then(process);
} else {
choice = choices[result - 1];
completer.complete(choice);
}
} catch (e) {
Prompter(buff.toString()).prompt().then(process);
}
};
Prompter(buff.toString()).prompt().then(process);
return completer.future;
}