Propagate state | Library | Provide data | State is stored in | Can combine states | Easy to learn |
---|---|---|---|---|---|
Using Flutter widget tree | setState | No need | Widget | No | Easy |
InheritedWidget | No need | Subtree root | No | Easy | |
provider | Using InheritedWidget | InheritedWidget (code) | No | Easy | |
Using Stream | flutter_bloc | Using provider | Provider (state, provider, stream) | No | Easy |
flutter_redux | Using InheritedWidget | InheritedWidget (state, InheritedWidget, stream) | No | Easy | |
Using subscription | riverpod | No need | Centralized (state, propagate) | Yes | Medium |
flutter_mobx | No need | Rx variable (state, propagate) | Yes | Medium | |
getx | No need | Rx variable (state, stream) | Partial | Medium | |
Using graph | creator | No need | Centralized (state, propagate) | Yes | Easy |
Notes:
Provide data
means that the state has to be "provided" by a special widget, whose job is to store state and make it accessible to its subtree.Can combine states
means that user can easily access several states to build widget, or combine states to generate new states.