Olá, tudo bem? Desafio concluído! Utilizei uma lista contendo todas as cores e incrementei uma variável para alternar entre elas. Quando o nível máximo da tarefa é atingido, ele é substituído pela indicação de "Maestria" na tarefa.
Variáveis utilizadas.
int nivel = 1;
int maestria = 0;
String mensagem = "Nível 1";
List<Color> cores = [
Colors.blue,
Colors.green,
Colors.yellow,
Colors.orange,
Colors.red,
Colors.purple,
Colors.black,
];
Modificando as cores das tarefas.
Container(
width: double.infinity,
decoration: BoxDecoration(
color: cores[maestria], borderRadius: BorderRadius.circular(4)),
height: 140,
),
Logica implementada.
onPressed: () {
setState(() {
if (maestria == cores.length - 1 &&
nivel >= widget.dificuldade * 10) {
mensagem = 'Maestria!';
ScaffoldMessenger.of(context)
.clearSnackBars(); // Limpa outros SnackBars
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: cores[maestria],
content: Text(
mensagem,
style: const TextStyle(color: Colors.white),
),
duration: const Duration(seconds: 3),
behavior: SnackBarBehavior.fixed,
padding: const EdgeInsets.all(16),
),
);
return; // Impede de continuar
}
if ((nivel / widget.dificuldade) % 10 == 0 &&
nivel == widget.dificuldade * 10) {
maestria++;
nivel = 0; // Reinicia o nível
}
nivel++;
mensagem = 'Nível $nivel';
});
},