Skip to content
Boring Doc
Official documentation (snapshot)doc

Approaches to state management

An introduction to different approaches to managing state in Flutter apps.

Source last updated Oct 21, 2026 · last synchronized 3 weeks ago · commit b3045439b7c0 · read on docs.flutter.dev

This is a rendered snapshot of the official page as stored by Boring Doc for provenance and search. Site-specific components (embedded demos, DartPad, images with relative paths) may not render; use the official page for the full experience. Content © The Flutter Authors, CC BY 3.0.

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 from the following resources, many of which have been contributed by the Flutter community.

General overview

Things to review before selecting an approach.

Built-in approaches

setState

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

ValueNotifier and InheritedNotifier

An approach using only Flutter provided APIs to update state and notify the UI of changes.

InheritedWidget and InheritedModel

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

The following instructor-led video workshop covers how to use InheritedWidget:

Other useful docs include:

Community-provided packages

Depending on the complexity of your app and preferences of your team, you might find adopting a state management package useful. State management packages often help reduce boilerplate code, provide specialized debugging tools, and can help enable a clearer and consistent application architecture.

The Flutter community offers a wide variety of state management packages. The best choice for your app often depends on the app's complexity, your team's preferences, and the specific problems you need to solve.

To begin exploring the available options, check out the [#state-management][]{: target="_blank"} topic on the pub.dev site and refine the search to find packages that match your needs.

you think would be useful to the Flutter community, consider adding the state-management topic and publishing the package to pub.dev.

Was this useful?

Content from flutter/website, © The Flutter Authors, used under the Creative Commons Attribution 3.0 License; code samples under the BSD License.