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();
}),
),