Nao é bem que o código não funciona, mas tem um erro ali que passou desapercebido.
No método difficultyvalidator (https://github.com/alura-cursos/alura_flutter_curso_3/blob/main/lib/screens/form_screen.dart, linha 26)
Os IFs aninhados não funcionam como o esperado. O código acaba testando apenas se o campo é nulo, mas nunca entra na condição de entre 1 e 5, isto acontece por que se ele nao for empty ele já sai para o return igual a false.
penso que o correto seria testar no mesmo IF, Algo como
if(value != null && (value.isEmpty || int.parse(value) > 5 || int.parse(value) < 1)){