TextButton(
  style: ButtonStyle(
    foregroundColor: MaterialStateProperty.resolveWith(
        (Set<MaterialState> states) {
      return states.contains(MaterialState.disabled)
          ? null
          : Colors.white;
    }),
    backgroundColor: MaterialStateProperty.resolveWith(
        (Set<MaterialState> states) {
      return states.contains(MaterialState.disabled)
          ? null
          : Colors.blue;
    }),
  ),
  onPressed:
      _formProgress == 1 ? _showWelcomeScreen : null, // UPDATED
  child: const Text('Sign up'),
),

Run the app.
The Sign up button is initially disabled,
but becomes enabled when all three text fields contain
(any) text.

Observations