Em tese, este código deveria funcionar, mas toda vez que chega na parte de adicionar notas, ele não avança para o próximo passo no terminal, começa até a sobrescrever o que está no terminal. Os outros dois comandos funcionam normalmente.
import 'dart:io';
import 'package:cli_dialog/cli_dialog.dart';
void main() {
List<int> notas = <int>[];
while (true) {
var comando = getComando();
if (comando == 'Sair') {
print('Até logo!');
break;
}
if (comando == 'Adicionar nota') {
adicionarNota(notas);
} else if (comando == 'Listar notas') {
listarNotas(notas);
}
}
}
dynamic getComando() {
const comandos = [
[
{
'question': 'Escolha um comando: ',
'options': ['Adicionar nota', 'Listar notas', 'Sair'],
},
'comando',
],
];
final dialogo = CLI_Dialog(listQuestions: comandos);
final resposta = dialogo.ask();
final comando = resposta['comando'];
return comando;
}
List<int> adicionarNota(List<int> notas) {
while (true) {
stdout.write('Digite a sua nota (de 0 a 10): ');
int nota = int.tryParse(stdin.readLineSync() ?? '') ?? -1;
if (nota < 0 || nota > 10) {
print('Valor inválido! Tente novamente!');
} else {
notas.add(nota);
return notas;
}
}
}
void listarNotas(List<int> notas) {
if (notas.isEmpty) {
print('Nenhuma nota cadastrada.');
return;
}
int i = 1;
for (int nota in notas) {
print('Nota $i: $nota');
i++;
}
}
Alguém saberia me dizer o porquê e como ajustar?