Dependencies class
An annotation to be specified on non-provider objects that use scoped providers.
This is equivalent to @Riverpod(dependencies: [])
, but for non-provider objects.
This is most commonly used on Consumer
s, but can be used on anything,
including functions.
The sole purpose of this annotation is to notify the linter that an object uses a scoped provider. It then enables the linter to warn in case this object is used in a place where the scoped provider is not overridden.
Usage example:
Consider the following scoped provider:
@Riverpod(dependencies: [])
String selectedBookID(Ref ref) => throw UnimplementedError();
Since this provider is scoped, we should specify @Dependencies
on any object
that uses it.
For instance, a Consumer
:
@Dependencies([selectedBookID])
class BookView extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final selectedBookID = ref.watch(selectedBookIDProvider);
return Text(selectedBookID);
}
}
By doing so, using BooKView
now requires either:
- overriding
selectedBookIDProvider
in aProviderScope
that is an ancestor ofBookView
:ProviderScope( overrides: [ selectedBookIDProvider.overrideWithValue('myBookID'), ], child: BookView(), ),
- or using
BookView
in a widget that also specifies@Dependencies([selectedBookID])
:@Dependencies([selectedBookID]) class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return BookView(); } }
Failing to do so will result in a linter warning.
Note: When using a StatefulWidget
(or variant),
there is no need to specify @Dependencies
on the State
class.
Specifying it on the StatefulWidget
is enough.
Constructors
-
Dependencies.new(List<
Object> dependencies) -
An annotation to be specified on non-provider objects that use scoped providers.
const
Properties
-
dependencies
→ List<
Object> -
An annotation to be specified on non-provider objects that use scoped providers.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited