Flutter 3.41 is live! Check out theFlutter 3.41 blog post!
Approaches to state management
An introduction to different approaches to managing state in Flutter apps.
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 thisOptions 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 andInheritedNotifier
#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 andInheritedModel
# The low-level approach used to communicate between ancestors and children in the widget tree. This is whatpackage:provider and many other approaches use under the hood.
The following instructor-led video workshop covers how to useInheritedWidget:
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.
If you've developed a state management package that you think would be useful to the Flutter community, consideradding thestate-management topic andpublishing the package to pub.dev.
Unless stated otherwise, the documentation on this site reflects Flutter 3.38.6. Page last updated on 2025-12-08.View source orreport an issue.