The purpose of Equatable package is to know if two Dart objects are same or they have the same hashCode or not.
In general most of the time you would know as a developer that if two variables or objects are same or not.
For example if you have a bool variable and you want to toggle value and change the state of the variable you would know the states are same or not after toggling the value and state.
In general handling simple state like bool variable I don’t use Equatable package.
But if I have complex business logic to handle, then I would extend Equatable class and make sure that my states are emitted whenever there is a change.
Since the business logic could be complex, It’s hard for me as a developer to know if two object’s hashCode are same or not.
For example, if you deal with chat system where you have to keep track of all the states of the chat messages and emit that correctly, then I would want my chat states class to extend Equatable.
But if you want you can always use Equatable class with your state classes.