AutoDisposeStateNotifierProvider<Notifier extends StateNotifier<State>, State> class

Creates a StateNotifier and expose its current state.

This provider is used in combination with package:state_notifier.

Combined with StateNotifier, StateNotifierProvider can be used to manipulate advanced states, that would otherwise be difficult to represent with simpler providers such as Provider or FutureProvider.

For example, you may have a todo-list, where you can add and remove and complete a todo. Using StateNotifier, you could represent such state as:

class TodosNotifier extends StateNotifier<List<Todo>> {
  TodosNotifier(): super([]);

  void add(Todo todo) {
    state = [...state, todo];
  }

  void remove(String todoId) {
    state = [
      for (final todo in state)
        if (todo.id != todoId) todo,
    ];
  }

  void toggle(String todoId) {
    state = [
      for (final todo in state)
        if (todo.id == todoId) todo.copyWith(completed: !todo.completed),
    ];
  }
}

Which you can then pass to a StateNotifierProvider like so:

final todosProvider = StateNotifierProvider<TodosNotifier, List<Todo>>((ref) => TodosNotifier());

And finally, you can interact with it inside your UI:

Widget build(BuildContext context, WidgetRef ref) {
  // rebuild the widget when the todo list changes
  List<Todo> todos = ref.watch(todosProvider);

  return ListView(
    children: [
      for (final todo in todos)
        CheckboxListTile(
           value: todo.completed,
           // When tapping on the todo, change its completed status
           onChanged: (value) => ref.read(todosProvider.notifier).toggle(todo.id),
           title: Text(todo.description),
        ),
    ],
  );
}
Inheritance
Mixed in types
Annotations
  • @sealed

Constructors

AutoDisposeStateNotifierProvider(Create<Notifier, AutoDisposeStateNotifierProviderRef<Notifier, State>> create, {String? name, List<ProviderOrFamily>? dependencies, Family<dynamic, dynamic, ProviderBase>? from, Object? argument})
Creates a StateNotifier and expose its current state.

Properties

allTransitiveDependencies List<ProviderOrFamily>?
All the dependencies of a provider and their dependencies too.
latefinalinherited
argument Object?
If this provider was created with the .family modifier, argument is variable used.
finalinherited
dependencies List<ProviderOrFamily>?
The list of providers that this provider potentially depends on.
latefinalinherited
from Family<dynamic, dynamic, ProviderBase>?
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
name String?
A custom label for providers.
finalinherited
notifier AutoDisposeProviderBase<Notifier>
Obtains the StateNotifier associated with this AutoDisposeStateNotifierProvider, without listening to it.
final
originProvider ProviderBase<Notifier>
The provider that will be refreshed when calling ProviderContainer.refresh and that will be overridden when passed to ProviderScope.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

create(covariant AutoDisposeProviderElementBase<State> ref) → State
Initializes the state of a provider
override
createElement() AutoDisposeProviderElementBase<State>
An internal method that defines how a provider behaves.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
overrideWithProvider(AutoDisposeStateNotifierProvider<Notifier, State> value) Override
Overrides a provider with a value, ejecting the default behaviour.
inherited
overrideWithValue(Notifier value) Override
Overrides a provider with a value, ejecting the default behaviour.
inherited
select<Selected>(Selected selector(State value)) ProviderListenable<Selected>
Partially listen to a provider.
inherited
toString() String
A string representation of this object.
inherited
updateShouldNotify(State previousState, State newState) bool
Called when a provider is rebuilt. Used for providers to not notify their listeners if the exposed value did not change.
override

Operators

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

Constants

family → const AutoDisposeStateNotifierProviderFamilyBuilder
A group of providers that builds their value from an external parameter.