Top Flutter Dependency Injection and State Management packages State management refers to the process of managing the data or state of an application. In other words, it's about keeping track of the various pieces of data that are used by an application and ensuring that they are consistent and up-to-date. State management is an important aspect of building a scalable and maintainable application, as it helps to ensure that the different parts of the application are working together in a predictable and consistent way. Dependency injection, on the other hand, is a design pattern that is used to create loosely coupled software components. In dependency injection, the dependencies of a particular component (such as a class or function) are passed in to the component from the outside, rather than being created or managed internally. This allows the component to be more easily tested and reused in different contexts, and makes it easier to manage the relationships between different components in an application. While state management and dependency injection are separate concepts, they can be used together to build scalable and maintainable applications. For example, a state management system can be used to manage the data or state of an application, while dependency injection can be used to create loosely coupled components that can interact with the state management system. The complete list of Flutter Dependency Injection and State Management packages is provided below.
get
14099
Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX.
flutter_bloc
6720
Flutter Widgets that make it easy to implement the BLoC (Business Logic Component) design pattern. Built to be used with the bloc state management package.
get_it
3935
Simple direct Service Locator that allows to decouple the interface from a concrete implementation and to access the concrete implementation from everywhere in your App"
riverpod
3194
A simple way to access state from anywhere in your application while robust and testable.
bloc
2728
A predictable state management library that helps implement the BLoC (Business Logic Component) design pattern.
rxdart
2465
RxDart is an implementation of the popular reactiveX api for asynchronous programming, leveraging the native Dart Streams api.
flutter_riverpod
2282
A simple way to access state from anywhere in your application while robust and testable.
mobx
1211
MobX is a library for reactively managing the state of your applications. Use the power of observables, actions, and reactions to supercharge your Dart and Flutter apps.
injectable
1174
Injectable is a convenient code generator for get_it. Inspired by Angular DI, Guice DI and inject.dart.
hooks_riverpod
796
A simple way to access state from anywhere in your application while robust and testable.
hydrated_bloc
766
An extension to the bloc state management library which automatically persists and restores bloc states.
flutter_mobx
651
Flutter integration for MobX. It provides a set of Observer widgets that automatically rebuild when the tracked observables change.
bloc_test
562
A testing library which makes it easy to test blocs. Built to be used with the bloc state management package.
bloc_concurrency
434
Custom event transformers inspired by ember concurrency. Built to be used with the bloc state management package.
flutter_data
348
The seamless way to work with persistent data models in Flutter. Inspired by Ember Data and ActiveRecord.
signals
347
Reactivity made simple. Do more by doing less. Supports Flutter and any Dart project including HTML/JS, CLI, Shelf Server, VM and more.
replay_bloc
160
An extension to the bloc state management library which adds support for undo and redo.
kiwi
155
A simple yet efficient dependency injection container for Dart and Flutter (can be coupled with the kiwi_generator package).
async_redux
146
Redux without the boilerplate, tailored for Flutter. Easy to learn, to use and test. Allows for both sync and async reducers.
get_it_mixin
136
mixin on Stateless- and StatefulWidgts that makes binding the Widget to Objects stored in GetIt easier.
watch_it
103
The simple state management powered by get_it. It allows to observe changes of objects inside the get_it service locator and rebuild the UI accordingly.
momentum
99
MVC pattern for flutter. Works as state management, dependency injection and service locator.
riverbloc
97
BlocProvider implementation with riverpod as alternative to provider, similar to StateNotifierProvider
asp
85
ASP (Atomic State Pattern) is a extension to ValueNotifier by transparently applying functional reactive programming (TFRP)
ioc_container
82
A lightweight, flexible, and high-performance dependency injection and service location library for Dart and Flutter
rx_notifier
82
Extension to ValueNotifier by transparently applying functional reactive programming (TFRP)
flutter_getit
76
Project that allows you to use get_it as a dependency injection but controlled by Flutter's lifecycle, registering and unregistering in page navigation.
flutter_simple_dependency_injection
71
A super simple dependency injection implementation for flutter that behaves like any normal IOC container and does not rely on mirrors
isolator
70
Isolator is a package, which offer to you a simple way for creating two-component states with isolated part and frontend part of any kind - BLoC, MobX, ChangeNotifier and others
flutter_command
69
flutter_command is a way to manage your state based on 'ValueListenable' and the 'Command' design pattern.
fish_redux
66
Fish Redux is an assembled flutter application framework based on Redux state management.
creator
65
A state management library that enables concise, fluid, readable and testable business logic code.
redux_thunk
63
A Redux.dart Middleware that allows you to dispatch functions that perform async work as actions.
observable_ish
61
Write elegant reactive cross-platform client side application using observable states and event emitters.
state_persistence
61
Persist state across app launches. By default this library store state as a local JSON file called 'data.json' in the applications data directory.
functional_listener
59
An rx like extension methods on ValueListenable type, that lets you work with ValueNotifiers almost like with Streams
property_change_notifier
54
A drop-in replacement for ChangeNotifier for observing only certain properties of a model.
flutter_state_notifier
52
Flutter bindings for state_notifier, such as StateNotifierProvider and StateNotifierBuilder
rx_bloc
49
A Flutter package that helps implementing the BLoC (Business Logic Component) Design Pattern using the power of reactive streams.
bloc_presentation
48
Extends blocs with an additional stream which can serve as a way of indicating single-time events (so-called "presentation events").
reactter
48
A light, powerful and quick Reactive State Management, Dependency Injection and Event Management.
flutter_onlooker
47
A state management library that provides a simple solution for updating state and navigation.
june
44
June is a lightweight and modern state management library that focuses on providing a pattern very similar to Flutter's native state management.
isolate_bloc
44
A dart package that helps implement the BLoC pattern. BLoC works in Isolate and don't slow down UI.
statemachine
43
A simple, yet powerful state machine framework for Dart supporting Flutter and web apps.
comms
41
Simple communication pattern abstraction on streams, created for communication between logic classes.
flutter_rx_bloc
38
Set of Flutter Widgets that help implementing the BLoC design pattern. Built to be used with the rx_bloc package.
flutter_reactter
37
A light, powerful and quick Reactive State Management, Dependency Injection and Event Management.
fquery
37
FQuery is a powerful async state management solution for flutter. It caches, updates and fully manages asynchronous data in your flutter apps.
angular_bloc
36
Angular Components that make it easy to implement the BLoC (Business Logic Component) design pattern. Built to be used with the bloc state management package.
mvvm_plus
36
MVVM+ is a lightweight Flutter implementation of MVVM, plus a locator for sharing states via a global registry (like GetIt) or inherited widgets (like Provider).
mvvm
36
A Flutter MVVM. It uses property-based data binding to establish a connection between the ViewModel and the View, and drives the View changes through the ViewModel.
state_machine
35
Finite state machine library. Easily define legal state transitions. Listen to state entrances, departures, and transitions.
stream_bloc
33
Modern implementation of the Original BLoC that uses asynchronous generators to describe relationships between events and states.
vxstate
32
VxState is an another state management solution for flutter. It is highly inspired from Redux & VueX.
after_init
32
Adds a didInitState() lifecycle method to stateful widgets where you can safely access inherited widgets.
redux_saga
31
redux_saga is a library that aims to make application side effects easier to manage, more efficient to execute, easy to test, and better at handling failures.
injecteo
31
Service locator for IoC pattern. Export annotations and abstract classes used by injecteo_generator.
dart_notification_center
31
A wrapper for the observer pattern for Dart in the style of the iOS Notification Center.
livestream
30
LiveStream is a simple class which makes communication easy among different modules of your application.
hydrated
28
An automatically persisted BehaviorSubject with simple hydration for Flutter. Intended to be used with the BLoC pattern.
rx_bloc_cli
26
rx_bloc_cli that enables quick project setup including: flavors, localization [intl], state management [rx_bloc], routing [go_router], design system, analytics [firebase], tests
flutter_bloc_devtools
26
Remote DevTools for flutter_bloc. This package connects all Bloc to the Remote Devtools Server, allowing the developer to inspect changes to the Blocs during runtime.
bloc_provider
24
Provides bloc to descendant widget (O(1)), and the bloc is disposed appropriately by state which the bloc_provider holds internally.
flutter_comms
23
Simple communication pattern abstraction on streams, created for communication between logic classes and or widgets.
generic_bloc_provider
22
A generic BloC Provider for your Flutter apps. This package will help you avoid the boilerplate of writing BloC Providers.
stateful_props
21
Provides a simple way to re-use behaviors across StatefulWidgets. Improves readability and robustness of your components.
rx_redux
20
Redux implementation based on Dart Stream, with the power of RxDart. Reactive redux store for Dart & Flutter.
mvvm_architecture
20
The goal behind is to move as much of the state and logic from the ViewState into a separate entity called the ViewModel.
solace_flowz
20
state management package built on top of InheritedWidget, that aims to simplify the state managementm work for flutter developers and perofrm the task using the minimal resources .
flutter_control
19
Flutter Control is complex library to maintain App and State management, Dependency Injection, Navigation with Routing, Localization and more..
flutter_mobx_helpers
18
A set of tools for MobX that helps you with common processes making everything easier.
rebloc
17
A state management library for Flutter that combines aspects of Redux and BLoC. Rebloc uses streams and BLoCs to compose middleware and reducers.
provider_for_redux
16
Lets you use Provider with Redux. Uses AsyncRedux, the non-boilerplate version of Redux.
inherited_state
15
Simple and clean state management backed by InheritedWidget and DI backed by the service locator pattern.
mobx_provider
14
package for binding the UI with your stores (viewmodels) easily , the package is inspired by filled stacks archticture pattern
grab
13
A set of mixins and extension methods as an alternative to ListenableBuilder / ValueListenableBuilder, good for state management.
alt_bloc
12
A library that provides components for more easier and boilerplate implementation of the BLoC architecture pattern.
state_extended
10
This class extends the capabilities of Flutter's State class and includes a controller.
dash
9
Dash library is responsible to offer a service locator pattern that cares about provide and dispose blocs.
flutter_flux
9
Flux library for Flutter, featuring unidirectional dataflow inspired by reflux and Facebook's flux architecture.
stream_mixin
6
State management using stream to avoid use of flutter's State/setState/StatefulWidget, boosting the performance and code separation.
karee
6
Another way to build Flutter applications for mobile, web and desktop using Karee Architecture.
simple_architecture
5
Simple Architecture for Flutter apps with Dependency Injection, Mediator Pattern and Observable Streams
disposable_provider
5
DisposableProvider is thin wrapper of Provider and it calls dispose automatically.
flutter_bloc_pattern
3
Bloc provider. Provides bloc to descendant widget (O(1)), and the bloc is disposed appropriately by state which the bloc_provider holds internally.
pulse_x
3
Pulse X is the mini state management. It has four features - state management, context-less routing, dependency injection & reaction (side effects)
karee_core
1
Karee core files, Karee core represents a set of amazing libraries, that work together to offer very powerful MVC experience in Flutter App Development