StateNotifierProvider<Notifier extends StateNotifier<State> , State> class
Null safety
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
-
- Object
- ProviderBase<
State> - AlwaysAliveProviderBase<
State> - StateNotifierProvider
- Mixed in types
-
- StateNotifierProviderOverrideMixin<
Notifier, State>
- StateNotifierProviderOverrideMixin<
- Annotations
Constructors
-
StateNotifierProvider(Create<
Notifier, StateNotifierProviderRef< create, {String? name, List<Notifier, State> >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.
read-onlyinherited
- name → String?
-
A custom label for providers.
finalinherited
-
notifier
→ AlwaysAliveProviderBase<
Notifier> -
Obtains the StateNotifier associated with this StateNotifierProvider,
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
.read-onlyinherited - runtimeType → Type
-
A representation of the runtime type of the object.
read-onlyinherited
Methods
-
create(
covariant ProviderElementBase< State> ref) → State -
Initializes the state of a provider
override
-
createElement(
) → ProviderElementBase< State> -
An internal method that defines how a provider behaves.
override
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a non-existent method or property is accessed.
inherited
-
overrideWithProvider(
StateNotifierProvider< 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)) → AlwaysAliveProviderListenable< 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
- autoDispose → const AutoDisposeStateNotifierProviderBuilder
-
Marks the provider as automatically disposed when no-longer listened.
AutoDisposeStateNotifierProviderBuilder()
- family → const StateNotifierProviderFamilyBuilder
-
A group of providers that builds their value from an external parameter.
StateNotifierProviderFamilyBuilder()