import 'dart:io';
void main() {
List<String> notas = <String>[];
// Cabeçalho ASCII
printAsciiHeader();
// Loop principal do menu
while (true) {
String comando = getComando();
if (comando == "1") {
adicionaNotas(notas);
} else if (comando == "2") {
listarNotas(notas);
} else if (comando == "3") {
print("\nObrigado por usar o sistema. Até logo!\n");
break;
}
// pequena separação visual entre operações
print("\n" + ("-" * 40) + "\n");
}
}
void printAsciiHeader() {
print(r'''
__ __ _ _ _ _ _
| \/ (_)_ _ | |_ __ _ ___ | \| |___| |_ __ _ ___
| |\/| | | ' \| ' \/ _` (_-< | .` / _ \ _/ _` (_-<
|_| |_|_|_||_|_||_\__,_/__/ |_|\_\___/\__\__,_/__/
Sistema de Notas - Bytebank
''');
}
/// Pede e valida um comando (1,2,3). Repete até entrada válida.
String getComando() {
stdout.write("Digite um comando: 1 - Adicionar notas, 2 - Listar notas, 3 - Sair\n> ");
List<String> comandos = ["1", "2", "3"];
String? entrada = stdin.readLineSync()?.trim();
if (entrada == null || entrada.isEmpty || !comandos.contains(entrada)) {
print("Comando inválido, tente novamente.\n");
return getComando(); // retorna a chamada recursiva corrigida
}
return entrada;
}
/// Adiciona uma ou mais notas. Pergunta se o usuário quer adicionar outra nota.
void adicionaNotas(List<String> notas) {
while (true) {
stdout.write("\nDigite a nota a ser adicionada:\n> ");
String? nota = stdin.readLineSync();
if (nota == null || nota.trim().isEmpty) {
print("Não é possível adicionar uma nota vazia.");
} else {
notas.add(nota.trim());
print("Nota adicionada com sucesso.");
}
// Pergunta se quer adicionar outra
stdout.write("Deseja adicionar outra nota? (s/n)\n> ");
String? resposta = stdin.readLineSync();
if (resposta == null) resposta = "n";
resposta = resposta.trim().toLowerCase();
if (resposta != 's' && resposta != 'sim') {
break;
}
}
}
/// Lista as notas com índice; informa se não houver notas.
void listarNotas(List<String> notas) {
print("\n===== Lista de Notas =====");
if (notas.isEmpty) {
print("Nenhuma nota cadastrada.");
return;
}
for (var i = 0; i < notas.length; i++) {
print("${i + 1}. ${notas[i]}");
}
}