StateProvider<ValueT> class final

A provider that exposes a value that can be modified from outside.

It can be useful for very simple states, like a filter or the currently selected item – which can then be combined with other providers or accessed in multiple screens.

The following code shows a list of products, and allows selecting a product by tapping on it.

final selectedProductIdProvider = StateProvider<String?>((ref) => null);
final productsProvider = StateNotifierProvider<ProductsNotifier, List<Product>>((ref) => ProductsNotifier());

Widget build(BuildContext context, WidgetRef ref) {
  final List<Product> products = ref.watch(productsProvider);
  final selectedProductId = ref.watch(selectedProductIdProvider);

  return ListView(
    children: [
      for (final product in products)
        GestureDetector(
          onTap: () => ref.read(selectedProductIdProvider.notifier).state = product.id,
          child: ProductItem(
            product: product,
            isSelected: selectedProductId.state == product.id,
          ),
        ),
    ],
  );
}
Inheritance
Available extensions
Annotations
  • @publicInLegacy

Constructors

StateProvider(ValueT _createFn(Ref ref), {String? name, Iterable<ProviderOrFamily>? dependencies, bool isAutoDispose = false, Retry? retry})
A provider that exposes a value that can be modified from outside.

Properties

argument → Object?
If this provider was created with the .family modifier, argument is the variable that was used.
finalinherited
dependencies → Iterable<ProviderOrFamily>?
The list of providers that this provider potentially depends on.
finalinherited
from → Family?
If this provider was created with the .family modifier, from is the .family instance.
finalinherited
hashCode → int
The hash code for this object.
no setterinherited
isAutoDispose → bool
Whether the state associated to this provider should be disposed automatically when the provider stops being listened.
finalinherited
listenable → ProviderListenable<ValueListenable<T>>

Available on ProviderListenable<T>, provided by the ProviderListenableListenable extension

Exposes a ValueListenable that tracks the state of this provider.
no setter
name → String?
A custom label for providers.
finalinherited
notifier → Refreshable<StateController<ValueT>>
Obtains the StateController of this provider.
no setter
origin → ProviderBase<ValueT>
The provider that is overridden.
no setterinherited
retry → Retry?
The retry strategy to use when a provider fails.
finalinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

create(Ref ref) → ValueT
@nodoc
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
overrideWith(Create<ValueT> create) → Override
Override the provider with a new initialization function.
inherited
select<OutT>(OutT selector(InT value)) → ProviderListenable<OutT>

Available on ProviderListenable<InT>, provided by the ProviderListenableSelect extension

Partially listen to a provider.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Constants

autoDispose → const AutoDisposeStateProviderBuilder
Marks the provider as automatically disposed when no longer listened to.
family → const StateProviderFamilyBuilder
A group of providers that builds their value from an external parameter.