In most of the projects we have built so far, we've dealt with the state using stateful widgets. While this approach is great for prototyping or simple apps, it is not ideal when your app grows.
There are several reasons for this. Arguably, the most important reason is that you would put at least part of the logic of your app in the same class as your layout. You should avoid mixing layout and code, as it's hard to maintain and reuse the same code in different circumstances. It also makes it easier for developers in a group to work on the same code base if you keep the logic and UI clearly separated.
Also, if you have data that changes in your app, and you need to update several widgets on different screens, then you also risk unnecessarily duplicating your code. Maintaining your app may become extremely costly, and keeping the quality of your software...