Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Faça como eu fiz: incremente o programa de notas

import 'dart:io';

void main() {
  List<String> notas = <String>[];
  getComando();
  adicionaNota(notas);
  adicionaNota(notas);
  adicionaNota(notas);
  listarNotas(notas);
}

String getComando() {
  print('Digite um comando: 1 - Adicionar, 2 - Listar, 3 - Sair');
  List<String> comandos = ['1', '2', '3'];
  String? entrada = " ";

  entrada = stdin.readLineSync();

  if (entrada == null || !comandos.contains(entrada)) {
    print("Comando invalido");
    getComando();
  }
  return entrada!;
}

List<String> adicionaNota(List<String> notas) {
  print('Escreva uma nota:');
  String? nota = " ";

  nota = stdin.readLineSync();

  if (nota == null || nota.isEmpty) {
    print("Não é possivel adicionar uma nota:");
    adicionaNota(notas);
  }
  notas.add(nota!);

  return notas;
}

void listarNotas (List<String> notas) {
  for (var i = 0; i < notas.length; i++) {
    print(notas[i]);
  }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Oi, José Antônio! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei de como você organizou em funções (getComando, adicionaNota, listarNotas) e usou entrada via terminal. Um ponto a melhorar é evitar recursão para ler entradas e usar o retorno de getComando(), pois isso pode estar ligado a chamadas extras quando a entrada é inválida.

Uma dica interessante para o futuro é usar um loop de menu que valida a entrada e controla o fluxo. Veja este exemplo:


import 'dart:io';

void main() {
  final notas = <String>[];
  while (true) {
    stdout.write('Digite um comando (1-Adicionar, 2-Listar, 3-Sair): ');
    final cmd = stdin.readLineSync()?.trim() ?? '';
    if (cmd == '1') {
      stdout.write('Escreva uma nota: ');
      final n = stdin.readLineSync()?.trim() ?? '';
      if (n.isEmpty) {
        print('Nota vazia, tente novamente.');
      } else {
        notas.add(n);
        print('Nota adicionada.');
      }
    } else if (cmd == '2') {
      for (final n in notas) { print(n); }
    } else if (cmd == '3') {
      print('Saindo...');
      return;
    } else {
      print('Comando invalido.');
    }
  }
}

Esse codigo substitui recursao por while, usa trim() para limpar a entrada e permite adicionar ou listar notas conforme o comando.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!