1
resposta

Desafio: Mudança de cores ao finalizar cada tarefa

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.

1 resposta

Olá Julio, tudo bem?

Pelo que entendi, você criou uma lista de cores e está alterando a cor do widget conforme a tarefa é concluída, isso é ótimo! Você está no caminho certo.

Sobre postar o resultado no Discord, você pode ir na aba de "Comunidade" na plataforma da Alura e clicar em "Discord" para entrar no servidor da Alura no Discord.

Em relação ao seu código, parece que você está aumentando o contador quando a tarefa atinge o nível máximo de maestria, o que está correto. No entanto, notei que você está verificando se o contador é igual a 5 para então resetá-lo para 0. Isso é uma boa prática, pois evita que o contador ultrapasse o tamanho da sua lista de cores. Parabéns continue assim, praticando e evoluindo.

Espero ter ajudado e bons estudos!