There’s a lot of repeated code here. I think it would be a lot better to create a State class and have the different states inherit from it with all that repeated code. The only thing that changes between state right now is the name of the animation and that can be handled either passing a variable or even better, based on the state’s name.
Later in the course things do become more modular like this
I think it’s still too cumbersome having to create that many classes and duplicated code for such a simple thing. In my opinion, it could have been done a bit better from the beginning instead of relying on notifications and states checking the player direction in a circular dependency.
Even easier, using the AnimationTree Godot provides: