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.

Provider

A recommended approach.

setState

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.

Redux

A state container approach familiar to many web developers.

Fish-Redux

Fish Redux is an assembled flutter application framework based on Redux state management. It is suitable for building medium and large applications.

BLoC / Rx

A family of stream/observable based patterns.

GetIt

A service locator based state management approach that doesn’t need a BuildContext.

MobX

A popular library based on observables and reactions.

Flutter Commands

Reactive state management that uses the Command Pattern and is based on ValueNotifiers. Best in combination with GetIt, but can be used with Provider or other locators too.