Approaches to state management
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.
- 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
Built-in approaches
#setState
#The low-level approach to use for widget-specific, ephemeral state.
- Adding interactivity to your Flutter app, a Flutter tutorial
- Basic state management in Google Flutter, by Agung Surya
ValueNotifier
and InheritedNotifier
#An approach using only Flutter provided APIs to update state and notify the UI of changes.
- State Management using ValueNotifier and InheritedNotifier, by Tadas Petra
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
:
Watch on YouTube in a new tab: "How to manage application state using inherited widgets"
Other useful docs include:
- InheritedWidget docs
- Managing Flutter Application State With InheritedWidgets, by Hans Muller
- Inheriting Widgets, by Mehmet Fidanboylu
- Using Flutter Inherited Widgets Effectively, by Eric Windmill
- Widget - State - Context - InheritedWidget, by Didier Bolelens
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
topic on the pub.dev site and refine the search to find packages that match your needs.
Unless stated otherwise, the documentation on this site reflects the latest stable version of Flutter. Page last updated on 2025-08-29. View source or report an issue.