1
resposta

[Projeto] Desafio resolvido!

Crie a variavel nivelMax e nivelColor, além de criar uma lista. Modifiquei a função upNivel para definir um nível máximo de acordo com o numero de estrelas de dificuldade, e que caso o nível máximo seja atingido, haja a mudança de cor de acordo com a lista de cores predefinidas, se a lista de cores for totalmente percorrida, há um else para fazer a lista reiniciar.

class _TaskState extends State<Task> {
  int nivel = 0;
  int nivelMax = 10;
  int nivelColor = 0;

  List listColors = [
    Colors.blue,
    Colors.green,
    Colors.grey,
    Colors.purple,
    Colors.brown,
    Colors.red,
    Colors.pinkAccent,
  ];

  void upNivel() {
    if (nivel < (widget.dificuldade * nivelMax)) {
      nivel++;
    } else {
      nivel = 1;
      if (nivelColor < listColors.length - 1) {
        nivelColor++;
      } else {
        nivelColor = 0;
      }
    }
  }

  double incrementProgressBar() {
    return (widget.dificuldade > 0)
        ? (nivel / (widget.dificuldade * nivelMax))
        : 0;
  }

E seguir ficou dentro do Widget build

SizedBox(
                      height: 52,
                      width: 52,
                      child: ElevatedButton(
                          onPressed: () {
                            setState(() {
                              upNivel();
                            });
                          },
                          child: Column(
 Container(
                color: listColors[nivelColor],
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Padding(
                      padding: const EdgeInsets.all(8),
                      child: SizedBox(
                        child: LinearProgressIndicator(
                          color: Colors.white,
                          value: incrementProgressBar(),
                        ),
                        width: 200,
                      ),
                    ),
                    Padding(
                      padding: const EdgeInsets.all(12),
                      child: Text(
                        'Nivel $nivel',
                        style: TextStyle(color: Colors.white, fontSize: 16),
                      ),
                    ),
                  ],
                ),
              )
1 resposta

Fala Antonio! De boa ?

Cara mandou super bem na sua solução, continue sempre praticando que tu vai longe \o/

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software