Eu usei um List<> para criar uma lista de cores e usei uma variável para acessar os index da lista cada vez que ela muda de valor usando o %
class _TaskState extends State<Task> {
int nivel = 0;
//Color newColor = Colors.amber;
int contador = 0;
List<Color> listColors = [
Colors.blue,
Colors.orange,
Colors.red,
Colors.yellow,
Colors.black,
];
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(10),
child: Stack(
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4),
color: listColors[contador % listColors.length],
),
height: 140,
),
Column(
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4),
color: Colors.white,
),
height: 100,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 05),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4),
),
width: 72,
height: 100,
child: Image.asset(
widget.foto,
fit: BoxFit.cover,
),
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
width: 200,
child: Text(
widget.nome,
style: const TextStyle(
fontSize: 20,
overflow: TextOverflow.ellipsis,
),
),
),
Padding(
padding: const EdgeInsets.only(top: 15),
child:
Difficulty(difficultyLevel: widget.dificuldade),
),
],
),
SizedBox(
width: 100,
height: 60,
child: ElevatedButton(
style: const ButtonStyle(
backgroundColor:
MaterialStatePropertyAll(Colors.blue),
),
onPressed: () {
if ((nivel / widget.dificuldade) / 10 == 1) {
setState(() {
nivel = 0;
contador++;
});
} else {
setState(
() {
nivel++;
if(contador == 5){
contador = 0;
}
},
);
}
},
Não consegui gravar o resultado ainda, mas não achei onde postar no Discord o resultado como é pedido na "11 Desafio: cores dinâmicas para tarefas concluídas" - Opinião do Instrutor.