Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Finalizei hoje a aula sobre Map e estou testando algumas coisas

Finalizei hoje a aula que falava sobre Map e também Set, resolvi brincar um pouco com eles e laços de repetição, queria saber o que consigo melhorar nos códigos e o que está errado nele que possa ser feito de outra forma.

Esse é com o Map.

  Map<String, dynamic> anotandoComprasEValor = {};

  var pergunta = print('Deseja inserir algum item?');
  String valida = "sim";

  while (valida != "não") {
    pergunta;
    var respostaUsuario = stdin.readLineSync();

    if (respostaUsuario == "sim" || respostaUsuario == "Sim") {
      print("Qual o item que quer adicionar?");
      var item = stdin.readLineSync();
      print("Qual o valor do item $item?");
      var custo = stdin.readLineSync();
      anotandoComprasEValor[item!] = custo;
    } else {
      break;
    }

    if (anotandoComprasEValor.isNotEmpty) {
      pergunta = print("Quer adicionar outro item?");
    }
  }
  print("Aqui está sua lista usando Map");
  print(anotandoComprasEValor);
}

Esse com Set

  Set<String> anotandoCompras = {};

  String validacao = "sim";
  var pergunta = print("Quer adicionar algo?");

  while (validacao != "não") {
    pergunta;
    var validar = stdin.readLineSync();

    if (validar == "Sim" || validar == "sim") {
      print("Digite o que quer adicionar");
      var recebendoItens = stdin.readLineSync();
      anotandoCompras.add(recebendoItens!);
    } else {
      validacao = "não";
    }

    if (anotandoCompras.isNotEmpty) {
      pergunta = print("Quer adicionar mais alguma coisa?");
    }
  }
  print("Aqui esta sua lista usando Set");
  print(anotandoCompras);
2 respostas
solução!

Olá Vitor, tudo bem?

Parabéns por finalizar a aula sobre Map e Set! É muito legal ver que você já está colocando em prática o que aprendeu.

Sobre o código utilizando o Map, uma sugestão seria validar se o valor inserido para o custo é numérico, para evitar erros futuros. Você pode utilizar a função num.tryParse() para isso. Além disso, você pode utilizar a função toLowerCase() para transformar a resposta do usuário em minúsculo, assim evita ter que validar tanto "sim" quanto "Sim".

Já no código utilizando o Set, uma sugestão seria utilizar a função contains() para verificar se o item já foi adicionado anteriormente, evitando duplicatas na lista.

Espero ter ajudado e bons estudos!

Muito obrigado pela ajuda e pelas dicas, vou aplicar elas nos códigos e fazer alguns testes.