awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectAboutHow we rankPressMCP server
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
rrousselGit avatar

rrousselGit/provider

0
View on GitHub↗
5,258 stars·527 forks·Dart·MIT·9 viewspub.dev/packages/provider↗

Provider

Provider is a state management and dependency injection framework for Flutter. It simplifies the sharing of data across a widget tree by using a system that manages the injection of objects and services with automated lifecycle and resource disposal.

The framework distinguishes itself through reactive state containers that bridge asynchronous data from streams and futures directly into the component tree. It supports state derivation, allowing new objects to be constructed and synchronized based on values observed from multiple upstream providers. To maintain performance, it provides selective rebuild filtering and partial state subscriptions to limit updates to specific slices of the user interface.

The library covers broad capability areas including interface mapping to decouple concrete implementations from abstract interfaces and provider composition to flatten multiple dependency definitions and reduce nesting. It also includes utilities for optional dependency resolution and the preservation of application state during development hot reload cycles.

Features

  • Dependency Injection Providers - Implements a provider-based system to inject services and configurations into component hierarchies for a Flutter application.
  • Contextual State Lookups - Provides mechanisms for retrieving shared objects from the component tree using context-based lookups.
  • Component-Tree Lifecycle Management - Handles lazy allocation and automatic disposal of objects based on their position in the component tree lifecycle.
  • Dependency Lifecycle Management - Manages the complete lifecycle of dependency objects, ensuring proper instantiation and resource cleanup when removed from the tree.
  • Lifecycle-Managed Initialization - Provides lazy instantiation of dependencies combined with automated resource disposal tied to the widget tree lifecycle.
  • Stream-Based Data Providers - Converts asynchronous data from futures or streams into reactive providers that automatically drive Flutter UI updates.
  • Flutter State Management - Provides libraries and patterns for managing and synchronizing shared application state across a Flutter widget tree.
  • Future-Based State Providers - Provides specialized handling for futures, exposing the final resulting value to descendant widgets automatically.
  • Dependency Injection Frameworks - Implements an inversion of control framework to manage component dependencies and their lifecycles.
  • Derived Provider Composers - Constructs new state by combining multiple upstream providers and automatically recomputing values when dependencies change.
  • Asynchronous Providers - Bridging asynchronous data streams into the component tree to trigger automatic UI updates when new values are emitted.
  • Tree-Based Providers - Provides a system for injecting objects into the widget tree with automatic disposal based on the tree lifecycle.
  • UI-Reactive Data Types - Triggers component rebuilds automatically when values update from streams, futures, or change notifiers.
  • Scoped Stateful Object Sharing - Enables creating singleton instances of stateful objects shared across a component and all its descendants to avoid prop drilling.
  • Reactive Async-Stream Integration - Exposes the most recent values from asynchronous streams and futures to the widget tree for reactive UI updates.
  • Reactive State Managers - Synchronizes application data across components via automatic change tracking to keep the UI in sync.
  • InheritedWidget Scoping - Implements state propagation using Flutter's native InheritedWidget for efficient, constant-time data lookups across the widget tree.
  • State Retrieval Mechanisms - Provides mechanisms to retrieve provided objects from the component tree via either one-time reads or reactive subscriptions.
  • Property-Specific Rebuild Filters - Allows watching only a subset of an object's properties so consumers rebuild only when those specific properties change.
  • Rebuild Optimization Tools - Offers utilities to isolate widget sub-trees and prevent unnecessary interface redraws during state updates.
  • Interface-Based Decoupling - Decouples components from concrete implementations by injecting dependencies through abstract interfaces, promoting testability.
  • Provider Grouping - Allows grouping multiple dependency providers into a single structure to reduce nesting and improve readability.
  • External Instance Integration - Allows publishing existing object instances to the component tree without the framework assuming ownership of their lifecycle.
  • Interface-to-Implementation Bindings - Maps abstract interfaces to concrete class implementations, allowing components to depend on interfaces for better modularity.
  • Partial State Selectors - Provides partial state selectors that restrict UI rebuilds to only occur when specific properties of a state object change.
  • Hot-Reload State Preservation - Executes custom logic during development reload cycles to preserve application state and context.
  • Flat Provider Compositions - Merges multiple providers into a flat structure to eliminate deeply nested wrapper components in the widget tree.
  • Selective Rebuilds - Optimizes performance by limiting widget rebuilds to only those components that depend on specific slices of shared state.
  • Selective Widget Rebuilding - Implements techniques to isolate UI updates by monitoring specific state slices to minimize rendering overhead.
  • Reactive Provider Containers - Ships reactive provider containers that synchronize dependent state and expose asynchronous data to the component tree.
  • Development Frameworks - Dependency injection and state management library.
  • State Management - Simple and efficient state management for widget trees.

Star history

Star history chart for rrousselgit/providerStar history chart for rrousselgit/provider

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Provider

Similar open-source projects, ranked by how many features they share with Provider.
  • felangel/blocfelangel avatar

    felangel/bloc

    12,455View on GitHub↗

    This is a Dart state management library and architectural framework that decouples business logic from the user interface by transforming a stream of events into a stream of states. It implements a business logic component pattern to ensure that state transitions are predictable and testable. The project distinguishes itself through advanced event stream processing, providing concurrency strategies to drop, restart, or queue incoming events. It includes a dedicated state persistence layer for saving and restoring application state to maintain session continuity, as well as tools for state his

    Dart
    View on GitHub↗12,455
  • rrousselgit/riverpodrrousselGit avatar

    rrousselGit/riverpod

    7,315View on GitHub↗

    Riverpod is a reactive state management framework for Dart that manages application state through providers which automatically track dependencies and rebuild dependents when values change. It functions as an asynchronous data caching library, caching results of async operations and exposing loading, error, and data states to widgets without manual future handling. The framework includes a provider composition system that combines multiple providers into derived values that recompute automatically when any dependency changes, along with code generation for state providers that reduces boilerpl

    Dartdartflutterhacktoberfest
    View on GitHub↗7,315
  • samber/dosamber avatar

    samber/do

    2,645View on GitHub↗

    This project is a type-safe dependency injection framework for Go that manages application lifecycles and injects dependencies into structures using reflection and metadata tags. It functions as a service lifecycle manager and an interface binding library to decouple service consumption from concrete implementations. The framework utilizes a hierarchical service container, organizing services into a tree of nested scopes where child containers inherit dependencies from their ancestors. It includes a dependency graph visualizer for inspecting relationships and invocation chains, as well as a s

    Gocontainerdependencydependency-graph
    View on GitHub↗2,645
  • vandadnp/flutter-tips-and-tricksvandadnp avatar

    vandadnp/flutter-tips-and-tricks

    6,822View on GitHub↗

    This repository is a collection of practical code snippets and implementation patterns for Flutter and Dart. It serves as a comprehensive guide and reference for asynchronous programming, state management patterns, and UI component design. The project provides advanced language reference material covering generics, reflection, factory constructors, and null-aware operators. It also includes specific utilities for manipulating Dart collections, such as helper methods for transforming and filtering maps, lists, and iterables. The coverage extends to high-level capabilities including asynchrono

    Dartdartflutterflutter-ui
    View on GitHub↗6,822
See all 30 alternatives to Provider→

Frequently asked questions

What does rrousselgit/provider do?

Provider is a state management and dependency injection framework for Flutter. It simplifies the sharing of data across a widget tree by using a system that manages the injection of objects and services with automated lifecycle and resource disposal.

What are the main features of rrousselgit/provider?

The main features of rrousselgit/provider are: Dependency Injection Providers, Contextual State Lookups, Component-Tree Lifecycle Management, Dependency Lifecycle Management, Lifecycle-Managed Initialization, Stream-Based Data Providers, Flutter State Management, Future-Based State Providers.

What are some open-source alternatives to rrousselgit/provider?

Open-source alternatives to rrousselgit/provider include: felangel/bloc — This is a Dart state management library and architectural framework that decouples business logic from the user… rrousselgit/riverpod — Riverpod is a reactive state management framework for Dart that manages application state through providers which… samber/do — This project is a type-safe dependency injection framework for Go that manages application lifecycles and injects… vandadnp/flutter-tips-and-tricks — This repository is a collection of practical code snippets and implementation patterns for Flutter and Dart. It serves… ets-labs/python-dependency-injector — This is a dependency injection framework and inversion of control container for Python. It decouples object creation… jeffijoe/awilix — Awilix is a JavaScript dependency injection framework and inversion of control container. It provides a centralized…