didUpdateProvider method

  1. @override
  2. @mustCallSuper
void didUpdateProvider(
  1. ProviderObserverContext context,
  2. Object? previousValue,
  3. Object? newValue
)

Called by providers when they emit a notification.

  • newValue will be null if the provider threw during initialization.
  • previousValue will be null if the previous build threw during initialization. mutation If the change is caused by a "mutation", [] will be the invocation that caused the state change. This includes when a mutation manually calls state=:
@riverpod
class Example extends _$Example {
  @override
  int count() => 0;

  @mutation
  int increment() {
    state++; // This will trigger `didUpdateProvider` and "mutation" will be `#increment`

    // ...
  }
}

Implementation

@override
@mustCallSuper
void didUpdateProvider(
  ProviderObserverContext context,
  Object? previousValue,
  Object? newValue,
) {
  super.didUpdateProvider(context, previousValue, newValue);

  if (!settings.enabled || !settings.printProviderUpdated) return;

  final accepted = settings.providerFilter?.call(context.provider) ?? true;
  if (!accepted) return;

  _talker.logCustom(
    RiverpodUpdateLog(
      provider: context.provider,
      previousValue: previousValue,
      newValue: newValue,
      settings: settings,
    ),
  );
}