StateProvider<ValueT>  constructor 
      
      StateProvider<ValueT> (
    
- 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.
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,
          ),
        ),
    ],
  );
}
Implementation
StateProvider(
  this._createFn, {
  super.name,
  super.dependencies,
  super.isAutoDispose = false,
  super.retry,
}) : super(
       $allTransitiveDependencies: computeAllTransitiveDependencies(
         dependencies,
       ),
       from: null,
       argument: null,
     );