WidgetRef class sealed Core

An object that allows widgets to interact with providers.

WidgetRefs are typically obtained by using ConsumerWidget or its variants:

class Example extends ConsumerWidget {
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    // We now have a "ref"
  }
}

Once we have a WidgetRef, we can use its various methods to interact with providers. The most common use-case is to use WidgetRef.watch inside the build method of our widgets. This will enable our UI to update whenever the state of a provider changes:

@override
Widget build(BuildContext context, WidgetRef ref) {
  final count = ref.watch(counterProvider);
  // The text will automatically update whenever `counterProvider` emits a new value
  return Text('$count');
}

Note: Using a WidgetRef is equivalent to writing UI logic. As such, WidgetRefs should not leave the widget layer. If you need to interact with providers outside of the widget layer, consider using a Ref instead.

Available extensions

Properties

container → ProviderContainer
The ProviderContainer that is used to run the mutation.
no setterinherited
context → BuildContext
The BuildContext of the widget associated to this WidgetRef.
no setter
currentTheme → ThemeMode

Available on WidgetRef, provided by the ThemeSwitcherExtension extension

Get the current theme mode
no setter
hashCode → int
The hash code for this object.
no setterinherited
isDarkMode → bool

Available on WidgetRef, provided by the ThemeSwitcherExtension extension

Check if current theme is dark
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
themeSwitcher → ThemeSwitcherNotifier

Available on WidgetRef, provided by the ThemeSwitcherExtension extension

Get the theme switcher notifier
no setter

Methods

exists(ProviderBase<Object?> provider) → bool
Determines whether a provider is initialized or not.
invalidate(ProviderOrFamily provider, {bool asReload = false}) → void
Invalidates the state of the provider, causing it to refresh.
listen<StateT>(ProviderListenable<StateT> provider, void listener(StateT? previous, StateT next), {void onError(Object error, StackTrace stackTrace)?, bool weak = false}) → void
Listen to a provider and call listener whenever its value changes, without having to take care of removing the listener.
listenManual<StateT>(ProviderListenable<StateT> provider, void listener(StateT? previous, StateT next), {void onError(Object error, StackTrace stackTrace)?, bool fireImmediately, bool weak = false}) → ProviderSubscription<StateT>
Listen to a provider and call listener whenever its value changes.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
read<StateT>(ProviderListenable<StateT> provider) → StateT
Reads a provider without listening to it.
refresh<StateT>(Refreshable<StateT> provider) → StateT
Forces a provider to re-evaluate its state immediately, and return the created value.
toString() → String
A string representation of this object.
inherited
watch<StateT>(ProviderListenable<StateT> provider) → StateT
Returns the value exposed by a provider and rebuild the widget when that value changes.

Operators

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