ChangeNotifierProvider<NotifierT extends ChangeNotifier?> class
Creates a ChangeNotifier and exposes its current state.
Combined with ChangeNotifier, ChangeNotifierProvider 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 ChangeNotifier, you could represent such state as:
class TodosNotifier extends ChangeNotifier {
List<Todo> todos = [];
void add(Todo todo) {
todos.add(todo);
notifyListeners();
}
void remove(String todoId) {
todos.removeWhere((todo) => todo.id == todoId);
notifyListeners();
}
void toggle(String todoId) {
final todo = todos.firstWhere((todo) => todo.id == todoId);
todo.completed = !todo.completed;
notifyListeners();
}
}
Which you can then pass to a ChangeNotifierProvider like so:
final todosProvider = ChangeNotifierProvider<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).todos;
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
- ProviderOrFamily
- ProviderBase<
NotifierT> - ChangeNotifierProvider
- Mixed-in types
-
- AlwaysAliveProviderBase<
NotifierT>
- AlwaysAliveProviderBase<
Constructors
-
ChangeNotifierProvider(NotifierT _createFn(ChangeNotifierProviderRef<
NotifierT> ref), {String? name, Iterable<ProviderOrFamily> ? dependencies, @Deprecated('Will be removed in 3.0.0') Family<Object?> ? from, @Deprecated('Will be removed in 3.0.0') Object? argument, @Deprecated('Will be removed in 3.0.0') DebugGetCreateSourceHash? debugGetCreateSourceHash}) - Creates a ChangeNotifier and exposes its current state.
-
ChangeNotifierProvider.internal(NotifierT _createFn(ChangeNotifierProviderRef<
NotifierT> ref), {required String? name, required Iterable<ProviderOrFamily> ? dependencies, required Iterable<ProviderOrFamily> ? allTransitiveDependencies, required DebugGetCreateSourceHash? debugGetCreateSourceHash, Family<Object?> ? from, Object? argument}) - An implementation detail of Riverpod
Properties
-
allTransitiveDependencies
→ Iterable<
ProviderOrFamily> ? -
All the dependencies of a provider and their dependencies too.
finalinherited
- argument → Object?
-
If this provider was created with the
.family
modifier, argument is the variable that was used.finalinherited - debugGetCreateSourceHash → DebugGetCreateSourceHash?
-
A debug-only fucntion for obtaining a hash of the source code of the
initialization function.
finalinherited
-
dependencies
→ Iterable<
ProviderOrFamily> ? -
The list of providers that this provider potentially depends on.
finalinherited
-
from
→ Family<
Object?> ? -
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
→ AlwaysAliveRefreshable<
NotifierT> -
Obtains the ChangeNotifier associated with this provider, without listening
to state changes.
latefinal
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
addListener(
Node node, void listener(NotifierT? previous, NotifierT next), {required void onError(Object error, StackTrace stackTrace)?, required void onDependencyMayHaveChanged()?, required bool fireImmediately}) → ProviderSubscription< NotifierT> -
Starts listening to this transformer
inherited
-
createElement(
) → ChangeNotifierProviderElement< NotifierT> -
An internal method that defines how a provider behaves.
override
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
overrideWith(
Create< NotifierT, ChangeNotifierProviderRef< create) → OverrideNotifierT> > - Override the provider with a new initialization function.
-
read(
Node node) → NotifierT -
Obtains the result of this provider expression without adding listener.
inherited
-
select<
Selected> (Selected selector(NotifierT value)) → AlwaysAliveProviderListenable< Selected> -
Partially listen to a provider.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Constants
- autoDispose → const AutoDisposeChangeNotifierProviderBuilder
- Marks the provider as automatically disposed when no longer listened to.
- family → const ChangeNotifierProviderFamilyBuilder
- A group of providers that builds their value from an external parameter.