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

Desafio

E aí pessoal, tudo em paz?

Para solucionar o desafio, criei a função taskColor(), usando Switch Case, com opções de algumas cores.

taskColor(){
    switch(cor){
      case 1:
        return Colors.green ;
      case 2:
        return Colors.yellow;
      case 3:
        return Colors.red;
      case 4:
        return Colors.grey;
      default:
        return Colors.blue;
    }

E dentro do ElevatedButton, fiz uma condição para verificar se o nível máximo de maestria da tarefa foi alcançado e também uma variável "cor" que é incrementada sempre que o nível máximo de maestria é atingido.

onPressed: () {
    setState(() {
        nivel++;
        if((nivel/widget.dificuldade) > 10){
            nivel = 0;
            cor++;
        }
    });
},

Quando o nível máximo de maestria é atingido, a função taskColor() é chamada e de acordo com o valor da variável "cor", altera a cor do card todo (Container do card e botão "UP") da tarefa. E nesse instante o nível e a barra de progresso são "zerados”, permitindo assim que o nível máximo de maestria da tarefa seja atingido novamente, mas agora com o card de outra cor.

Container do card chamando a função taskColor():

Container(
            decoration: BoxDecoration(
                borderRadius: BorderRadius.circular(8),
                color: taskColor(),
            ),
            height: 140,
),

Botão "UP" chamando a função taskColor():

ElevatedButton(
    style: ButtonStyle(
          backgroundColor: MaterialStateProperty.resolveWith<Color?>((states){
                return taskColor();
          }),
),
1 resposta
solução!

Muuuuito Elegante!!!

Ta de parabens André, é isso ai meu querido! Mandou muuuito bem no desafio!

Dúvida: O que você achou da experiencia? Curtiu? Quer mais desafios nos proximos cursos?