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.
 
            