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
897
An extension to the bloc state management library which automatically persists and restores bloc states.
hooks_riverpod
882
A simple way to access state from anywhere in your application while robust and testable.
flutter_mobx
695
Flutter integration for MobX. It provides a set of Observer widgets that automatically rebuild when the tracked observables change.
bloc_test
635
A testing library which makes it easy to test blocs. Built to be used with the bloc state management package.
bloc_concurrency
525
Custom event transformers inspired by ember concurrency. Built to be used with the bloc state management package.
signals
512
Reactivity made simple. Do more by doing less. Supports Flutter and any Dart project including HTML/JS, CLI, Shelf Server, VM and more.
flutter_data
369
The seamless way to work with persistent data models in Flutter. Inspired by Ember Data and ActiveRecord.
replay_bloc
181
An extension to the bloc state management library which adds support for undo and redo.
watch_it
168
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.
kiwi
164
A simple yet efficient dependency injection container for Dart and Flutter (can be coupled with the kiwi_generator package).
async_redux
155
Redux without the boilerplate, tailored for Flutter. Easy to learn, to use and test. Allows for both sync and async reducers.
get_it_mixin
139
mixin on Stateless- and StatefulWidgts that makes binding the Widget to Objects stored in GetIt easier.
riverbloc
111
BlocProvider implementation with riverpod as alternative to provider, similar to StateNotifierProvider
flutter_command
104
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
95
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
83
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
81
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_simple_dependency_injection
72
A super simple dependency injection implementation for flutter that behaves like any normal IOC container and does not rely on mirrors
functional_listener
70
An rx like extension methods on ValueListenable type, that lets you work with ValueNotifiers almost like with Streams
bloc_presentation
68
Extends blocs with an additional stream which can serve as a way of indicating single-time events (so-called "presentation events").
creator
67
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.
fquery
65
FQuery is a powerful async state management solution for flutter. It caches, updates and fully manages asynchronous data in your flutter apps.
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.
observable_ish
64
Write elegant reactive cross-platform client side application using observable states and event emitters.
reactter
57
A light, powerful and quick Reactive State Management, Dependency Injection and Event Management.
rx_bloc
57
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
flutter_onlooker
49
A state management library that provides a simple solution for updating state and navigation.
statemachine
46
A simple, yet powerful state machine framework for Dart supporting Flutter and web apps.
isolate_bloc
44
A dart package that helps implement the BLoC pattern. BLoC works in Isolate and don't slow down UI.
signals_flutter
43
The signals library exposes four core functions which are the building blocks to model any business logic you can think of.
flutter_rx_bloc
42
Set of Flutter Widgets that help implementing the BLoC design pattern. Built to be used with the rx_bloc package.
mvvm_plus
42
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).
comms
42
Simple communication pattern abstraction on streams, created for communication between logic classes.
flutter_reactter
39
A light, powerful and quick Reactive State Management, Dependency Injection and Event Management.
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.
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.
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.
rx_bloc_cli
29
rx_bloc_cli that enables quick project setup including: flavors, localization [intl], state management [rx_bloc], routing [go_router], design system, analytics [firebase], tests
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.
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
24
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.
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.
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 .
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.
mobx_provider
14
package for binding the UI with your stores (viewmodels) easily , the package is inspired by filled stacks archticture pattern
power_state
12
A flutter state management solution with dependency injection. You can easily manage your state
scope
12
A Dependency injection (Inversion of Control) library. Supports nested Scopes and multiple values of the same type.
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.
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
6
Simple Architecture for Flutter apps with Dependency Injection, Mediator Pattern and Observable Streams
depend
5
depend simplifies dependency management in Flutter apps, providing easy initialization and access to services across the widget tree.
disposable_provider
5
DisposableProvider is thin wrapper of Provider and it calls dispose automatically.
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.
pulse_x
4
Pulse X is the mini state management. It has four features - state management, context-less routing, dependency injection & reaction (side effects)
flutter_state_management
3
A collection of helper classes to make the use of ChangeNotifier easier for state management
trent
3
A Flutter package for simple, scalable, and reactive state management with built-in dependency injection and efficient stream-based state handling.
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.
flutter_riverpod
0
A simple way to access state from anywhere in your application while robust and testable.
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.
with_bloc
0
A widget to create and manage BLoCs implemented on top of ValueNotifier, such as StateQueue.
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"
injectable
0
Injectable is a convenient code generator for get_it. Inspired by Angular DI, Guice DI and inject.dart.