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.
hydrated_bloc
937
An extension to the bloc state management library which automatically persists and restores bloc states.
hooks_riverpod
904
A simple way to access state from anywhere in your application while robust and testable.
flutter_mobx
704
Flutter integration for MobX. It provides a set of Observer widgets that automatically rebuild when the tracked observables change.
bloc_test
646
A testing library which makes it easy to test blocs. Built to be used with the bloc state management package.
signals
558
Reactivity made simple. Do more by doing less. Supports Flutter and any Dart project including HTML/JS, CLI, Shelf Server, VM and more.
bloc_concurrency
549
Custom event transformers inspired by ember concurrency. Built to be used with the bloc state management package.
flutter_data
371
The seamless way to work with persistent data models in Flutter. Inspired by Ember Data and ActiveRecord.
watch_it
193
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.
replay_bloc
183
An extension to the bloc state management library which adds support for undo and redo.
kiwi
168
A simple yet efficient dependency injection container for Dart and Flutter (can be coupled with the kiwi_generator package).
async_redux
156
Redux without the boilerplate, tailored for Flutter. Easy to learn, to use and test. Allows for both sync and async reducers.
get_it_mixin
140
mixin on Stateless- and StatefulWidgts that makes binding the Widget to Objects stored in GetIt easier.
riverbloc
112
BlocProvider implementation with riverpod as alternative to provider, similar to StateNotifierProvider
flutter_command
112
flutter_command is a way to manage your state based on 'ValueListenable' and the 'Command' design pattern.
momentum
97
MVC pattern for flutter. Works as state management, dependency injection and service locator.
asp
94
ASP (Atomic State Pattern) is a extension to ValueNotifier by transparently applying functional reactive programming (TFRP)
flutter_getit
90
Project that allows you to use get_it as a dependency injection but controlled by Flutter's lifecycle, registering and unregistering in page navigation.
ioc_container
88
A lightweight, flexible, and high-performance dependency injection and service location library for Dart and Flutter
june
85
June is a lightweight and modern state management library that focuses on providing a pattern very similar to Flutter's native state management.
rx_notifier
83
Extension to ValueNotifier by transparently applying functional reactive programming (TFRP)
isolator
82
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
fquery
76
FQuery is a powerful async state management solution for flutter. It caches, updates and fully manages asynchronous data in your flutter apps.
flutter_simple_dependency_injection
74
A super simple dependency injection implementation for flutter that behaves like any normal IOC container and does not rely on mirrors
bloc_presentation
74
Extends blocs with an additional stream which can serve as a way of indicating single-time events (so-called "presentation events").
functional_listener
71
An rx like extension methods on ValueListenable type, that lets you work with ValueNotifiers almost like with Streams
creator
68
A state management library that enables concise, fluid, readable and testable business logic code.
fish_redux
67
Fish Redux is an assembled flutter application framework based on Redux state management.
redux_thunk
66
A Redux.dart Middleware that allows you to dispatch functions that perform async work as actions.
observable_ish
66
Write elegant reactive cross-platform client side application using observable states and event emitters.
state_persistence
65
Persist state across app launches. By default this library store state as a local JSON file called 'data.json' in the applications data directory.
reactter
59
A light, powerful and quick Reactive State Management, Dependency Injection and Event Management.
rx_bloc
58
A Flutter package that helps implementing the BLoC (Business Logic Component) Design Pattern using the power of reactive streams.
property_change_notifier
56
A drop-in replacement for ChangeNotifier for observing only certain properties of a model.
flutter_state_notifier
54
Flutter bindings for state_notifier, such as StateNotifierProvider and StateNotifierBuilder
signals_flutter
50
The signals library exposes four core functions which are the building blocks to model any business logic you can think of.
flutter_onlooker
49
A state management library that provides a simple solution for updating state and navigation.
statemachine
48
A simple, yet powerful state machine framework for Dart supporting Flutter and web apps.
comms
45
Simple communication pattern abstraction on streams, created for communication between logic classes.
isolate_bloc
44
A dart package that helps implement the BLoC pattern. BLoC works in Isolate and don't slow down UI.
flutter_rx_bloc
43
Set of Flutter Widgets that help implementing the BLoC design pattern. Built to be used with the rx_bloc package.
mvvm_plus
43
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).
angular_bloc
39
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.
flutter_reactter
39
A light, powerful and quick Reactive State Management, Dependency Injection and Event Management.
state_machine
39
Finite state machine library. Easily define legal state transitions. Listen to state entrances, departures, and transitions.
mvvm
38
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.
stream_bloc
36
Modern implementation of the Original BLoC that uses asynchronous generators to describe relationships between events and states.
after_init
33
Adds a didInitState() lifecycle method to stateful widgets where you can safely access inherited widgets.
vxstate
31
VxState is an another state management solution for flutter. It is highly inspired from Redux & VueX.
rx_bloc_cli
31
rx_bloc_cli that enables quick project setup including: flavors, localization [intl], state management [rx_bloc], routing [go_router], design system, analytics [firebase], tests
injecteo
31
Service locator for IoC pattern. Export annotations and abstract classes used by injecteo_generator.
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.
livestream
30
LiveStream is a simple class which makes communication easy among different modules of your application.
dart_notification_center
30
A wrapper for the observer pattern for Dart in the style of the iOS Notification Center.
hydrated
28
An automatically persisted BehaviorSubject with simple hydration for Flutter. Intended to be used with the BLoC pattern.
flutter_bloc_devtools
27
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.
broadcast_bloc
26
An extension to the bloc state management library which adds support for broadcasting state changes to stream channels.
flutter_comms
25
Simple communication pattern abstraction on streams, created for communication between logic classes and or widgets.
bloc_provider
24
Provides bloc to descendant widget (O(1)), and the bloc is disposed appropriately by state which the bloc_provider holds internally.
generic_bloc_provider
22
A generic BloC Provider for your Flutter apps. This package will help you avoid the boilerplate of writing BloC Providers.
mvvm_architecture
22
The goal behind is to move as much of the state and logic from the ViewState into a separate entity called the ViewModel.
flutter_control
21
Flutter Control is complex library to maintain App and State management, Dependency Injection, Navigation with Routing, Localization and more..
stateful_props
21
Provides a simple way to re-use behaviors across StatefulWidgets. Improves readability and robustness of your components.
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 .
rx_redux
19
Redux implementation based on Dart Stream, with the power of RxDart. Reactive redux store for Dart & Flutter.
flutter_mobx_helpers
18
A set of tools for MobX that helps you with common processes making everything easier.
provider_for_redux
16
Lets you use Provider with Redux. Uses AsyncRedux, the non-boilerplate version of Redux.
rebloc
16
A state management library for Flutter that combines aspects of Redux and BLoC. Rebloc uses streams and BLoCs to compose middleware and reducers.
inherited_state
15
Simple and clean state management backed by InheritedWidget and DI backed by the service locator pattern.
grab
14
A set of mixins and extension methods as an alternative to ListenableBuilder / ValueListenableBuilder, good for state management.
command_it
14
command_it is a way to manage your state based on `ValueListenable` and the `Command` design pattern. It is a rebranding of flutter_command.
mobx_provider
14
package for binding the UI with your stores (viewmodels) easily , the package is inspired by filled stacks archticture pattern
scope
13
A Dependency injection (Inversion of Control) library. Supports nested Scopes and multiple values of the same type.
power_state
12
A flutter state management solution with dependency injection. You can easily manage your state
alt_bloc
12
A library that provides components for more easier and boilerplate implementation of the BLoC architecture pattern.
state_extended
11
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.
listen_it
9
An rx like extension methods on ValueListenable type, that lets you work with ValueNotifiers almost like with Streams. Previously published as functional_listener.
flutter_flux
9
Flux library for Flutter, featuring unidirectional dataflow inspired by reflux and Facebook's flux architecture.
hydrated_mobx
7
An extension to the MobX state management library which automatically persists and restores MobX states.
stream_mixin
6
State management using stream to avoid use of flutter's State/setState/StatefulWidget, boosting the performance and code separation.
depend
6
depend simplifies dependency management in Flutter apps, providing easy initialization and access to services across the widget tree.
pulse_x
6
Pulse X is the mini state management. It has four features - state management, context-less routing, dependency injection & reaction (side effects)
karee
6
Another way to build Flutter applications for mobile, web and desktop using Karee Architecture.
simple_architecture
6
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_state_management
4
A collection of helper classes to make the use of ChangeNotifier easier for state management
trent
4
A Flutter package for simple, scalable, and reactive state management with built-in dependency injection and efficient stream-based state handling.
flutter_bloc_pattern
4
Bloc provider. Provides bloc to descendant widget (O(1)), and the bloc is disposed appropriately by state which the bloc_provider holds internally.
syncx
2
SyncX is a lightweight, flexible Flutter state management library with notifiers and reactive UI updates, inspired by provider, bloc, and riverpod.
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
fast_mvvm
1
Implemented using the MVVM architecture, quickly build projects to help consumers focus only on the business implementation
flutter_bloc
0
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.
bloc
0
A predictable state management library that helps implement the BLoC (Business Logic Component) design pattern.
mobx
0
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
0
Injectable is a convenient code generator for get_it. Inspired by Angular DI, Guice DI and inject.dart.
get_it
0
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"
flutter_riverpod
0
A simple way to access state from anywhere in your application while robust and testable.
get
0
Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX.