Fala galera, belezuras ?
Não fiz um refactory pra deixar o código totalmente bonitinho mas basicamente fiz o seguinte:
Dentro do container do botão além de adicionar um nível a + aproveitei para inserir a logica verificando se a dificuldade era totalmente preenchida.
Aproveitei também para utilizar uma variável e expor um valor randômico dentro do range das cores primarias de Colors, e voltei o valor de nível pra 0 após o preenchimento indicando que seria necessário os cliques para subir de nível novamente.
Container(
height: 52,
width: 52,
child: ElevatedButton(
onPressed: () {
setState((){
nivel++;
if(((nivel/widget.dificuldade)/10) >= 1 ){
colorStart = Random().nextInt(Colors.primaries.length);
nivel = 0;
}
});
},
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.end,
children: const [
Icon(Icons.arrow_drop_up),
Text('UP', style: TextStyle(fontSize: 12),)
],
),
),
),
Inicializei a Task com o código default da cor azul, e para descobrir a cor azul foi muito simples, acessei a referencia da const Colors.primaries e vi a lista de cores disponíveis.
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Stack(
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(topLeft: Radius.circular(10)),
color: Colors.primaries[colorStart],
),
height: 140,
),
}
Também inseri um efeito no olho quando esconde ;D ... Como não consegui colocar o GIF aqui, então hospedei nesse link !!! Vlwsss