Olá!
Apenas compartilhando minha solução!
Como eu poderia deixa-la mais dinâmica, sem esses "if".
//Criando função e variáveis de controle
class _TaskState extends State<Task> {
int nivel = 0;
int nivelDois = 0;
double _progressValue = 0.0;
Color containerColor = Colors.blue;
void progressCheck() {
if (_progressValue == 1.0 && nivelDois == 0) {
nivel = 0;
nivelDois = 1;
containerColor = Colors.green;
} else {
if (_progressValue == 1.0 && nivelDois == 1) {
nivel = 0;
nivelDois = 2;
containerColor = Colors.yellow;
} else {
if (_progressValue == 1.0 && nivelDois == 2) {
nivel = 0;
nivelDois = 3;
containerColor = Colors.orange;
} else {
if (_progressValue == 1.0 && nivelDois == 3) {
nivel = 0;
nivelDois = 4;
containerColor = Colors.red;
} else {
if (_progressValue == 1.0 && nivelDois == 4) {
nivel = 0;
nivelDois = 5;
containerColor = Colors.purple;
} else {
if (_progressValue == 1.0 && nivelDois == 5) {
nivelDois = 4;
containerColor = Colors.black;
}
}
}
}
}
}
return;
}
//Implementando no LinearProgressIndicator
child: LinearProgressIndicator(
backgroundColor: Colors.white24,
color: Colors.white,
value: (widget.dificuldade > 0)
? (nivel / widget.dificuldade) / 10
: _progressValue = 1.0,
),
//Chamando a função
child: ElevatedButton(
style: ButtonStyle(
shape: MaterialStateProperty.all<OutlinedBorder>(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(4))),
backgroundColor:
MaterialStateProperty.all(Colors.blue),
),
onPressed: () {
setState(() {
nivel++;
_progressValue = (nivel / widget.dificuldade) / 10;
//checkNivel(nivel);
progressCheck();
});
//print(nivel);
},