AutoDisposeStateProvider<State> constructor

AutoDisposeStateProvider<State>(
  1. Create<State, AutoDisposeStateProviderRef<State>> create, {
  2. String? name,
  3. List<ProviderOrFamily>? dependencies,
  4. Family<dynamic, dynamic, ProviderBase>? from,
  5. Object? argument,
})

A provider that expose a value which 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

AutoDisposeStateProvider(
  Create<State, AutoDisposeStateProviderRef<State>> create, {
  String? name,
  List<ProviderOrFamily>? dependencies,
  Family? from,
  Object? argument,
})  : notifier = _AutoDisposeNotifierProvider(
        create,
        name: modifierName(name, 'notifier'),
        dependencies: dependencies,
        from: from,
        argument: argument,
      ),
      super(name: name, from: from, argument: argument);