List of state management approaches

State management is a complex topic. If you feel that some of your questions haven’t been answered, or that the approach described on these pages is not viable for your use cases, you are probably right.

Learn more at the following links, many of which have been contributed by the Flutter community:

General overview

Things to review before selecting an approach.


A recommended approach.


The low-level approach to use for widget-specific, ephemeral state.

InheritedWidget & InheritedModel

The low-level approach used to communicate between ancestors and children in the widget tree. This is what provider and many other approaches use under the hood.


A state container approach familiar to many web developers.

BLoC / Rx

A family of stream/observable based patterns.


A popular library based on observables and reactions.


A simplified reactive state management solution.