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

Código proposto pelo Instrutor não funciona.

Este erro se encontra no seguinte ponto do curso:

Módulo 1 - Conhecendo o Flutter / Curso 2 - Controller, Navegação e Estados / Aula 5 - Refinando nosso projeto / Atividade 3 - Refinando o projeto /

Neste módulo, as checagens de possíveis erros são checadas por funções criadas especificamente para isso. Para atingir este objetivo, o instrutor cria novas funções, e copia e cola o código de dentro do aplicativo para esta nova função, substituindo o código suprimido por uma chamada à função.

Só que no caso da função "difficultyValidator" este procedimento não é suficiente, pois a lógica do teste mudou.

Assim, como ele não testou todo o programa após fazer as alterações, acontece o seguinte:

Quando há algum erro ao se informar o "nivel de dificuldade" da tarefa, a função não é executada corretamente, gerando uma exceção que impede que este erro e os outros sejam testados.

Para testar este erro, basta entrar no programa e clicar no botão "Adicionar" com todos os campos vazios, aí pode ver-se que ele gera a exceção e não executa os outros testes.

Quando há algum erro ao se informar o "nivel de dificuldade" da tarefa, a função não é executada corretamente, gerando uma exceção que impede que este …

Eu fiz uma correção na função. Para funcionar corretamente, a função deveria ser a seguinte:

bool difficultyValidator(String? value) { if (value != null && value.isNotEmpty) { if (int.parse(value) >= 1 && int.parse(value) <= 5) { return true; } } return false; }

2 respostas

Olá! Parece que você encontrou um problema com a função "difficultyValidator" no curso de Flutter. Isso pode acontecer às vezes, e é ótimo ver que você conseguiu identificar e corrigir o problema por conta própria!

A sua correção parece correta. A função "difficultyValidator" verifica se o valor fornecido está entre 1 e 5. Se o valor não estiver neste intervalo, ou se for nulo ou vazio, a função retorna false, indicando que o valor fornecido não é válido.

Aqui está o código corrigido que você forneceu para referência:

bool difficultyValidator(String? value) {
  if (value != null && value.isNotEmpty) {
    if (int.parse(value) >= 1 && int.parse(value) <= 5) {
      return true;
    }
  }
  return false;
}

Este código verifica primeiro se o valor não é nulo e não está vazio. Se passar por essa verificação, ele então verifica se o valor é um número entre 1 e 5. Se passar por ambas as verificações, a função retorna true. Caso contrário, retorna false.

É importante lembrar que, ao trabalhar com programação, é comum encontrar erros e discrepâncias. A chave é aprender a depurar e corrigir esses erros, assim como você fez. Isso faz parte do processo de aprendizado e é uma habilidade valiosa para qualquer desenvolvedor.

E é ótimo que vai ficar registrado aqui nesse tópico no fórum. Obrigado :)

Espero ter ajudado e bons estudos!

solução!

Olá!

Muito obrigado pela sugestão! Eu fico com um pouco de receio de dizer que o código não funciona porque a ideia do vídeo é exatamente instigar as pessoas estudantes a procurarem por maneiras de melhorar o código. E você acabou apresentando uma solução para um problema que você encontrou. Devido ao tamanho do curso acredito que passar por todos os possíveis erros seria impossível. Mas no final parece que o objetivo foi atingido!

Parabéns pela proatividade e pela forma de solucionar um problema com o validador!

A minha versão:

  bool difficultyValidator(String? value) {
    if(value != null && value.isEmpty) {
      return true;
    }
    if(value != null && value.isNotEmpty) {
      if(int.parse(value) > 5 || int.parse(value) < 1) {
        return true;
      }
    }
    return false;
  }

Não é a maneira mais eficiente de fazer, mas acho que fica mais claro de enxergar os passos dessa validação, já que a função testa 2 situações diferentes.