Provider vs Stateful Widget

I have a question regarding Provider and Stateful Widget. What I have seen so far is that for complex applications with many Widgets, Provider is better compared to Stateful.
What I understand, calling setState() on a Stateful Widget has a big cost because it rebuilds all descendent Widgets while with Provider we have a better control of what should be rebuilt or updated.
In smaller apps, theoretically, both accomplish the same goals with no significative differences.
However, I was wondering if we could say that Provider can actually replace Stateful Widget even in use cases like forms.
If so, are there any drawbacks?