As mentioned previously, while Stateless widgets do not keep any state information, Stateful widgets can keep track of variables and properties, and in order to update the app, you use the setState() method. State is information that can change during the life cycle of a widget.
There are four core lifecycle methods that you can leverage in order to use Stateful widgets:
- initState() is only called once when the State is built. You should place the initial setup and starting values for your objects here. Whenever possible, you should prefer this to the build() method.
- build() gets called each time something changes. This will destroy the UI and rebuild it from scratch.
- deactivate() and dispose() are called when a widget is removed from the tree: use cases of these methods include closing a database connection or saving data before changing route.
So let's see how to deal with Futures in the context of the lifecycle of a widget.