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.

Introduction to state management, which is the beginning of this very section (for those of you who arrived directly to this Options page and missed the previous pages)

Pragmatic State Management in Flutter, a video from Google I/O 2019

Flutter Architecture Samples, by Brian Egan

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.

BLoC / Rx

A family of stream/observable based patterns.

MobX

A popular library based on observables and reactions.

GetX

A simplified reactive state management solution.