Criei um Map com todas as dificuldades, podendo adicionar outras dificuldades facilmente sem precisar de um If, e uma variável para controlar em que "nível de mudança de cor" estamos.
Por fim, adicionei a seguinte lógica no botão de level up. Caso o level alcançado seja maior que o maior nível daquela cor, ele altera as variáveis para alterar na tela.
Para acessar a cor no widget, apenas acessamos o map passando o valor de int para termos nossa cor.
decoration: BoxDecoration(
color: difficulties[currentLevelColor],
borderRadius: BorderRadius.circular(4)
),