create method

  1. @override
void create({
  1. required bool didChangeDependency,
})
override

Initialize a provider.

This function must call setState or throw (or both).

Exceptions within this function will be caught and set the provider in error state. Then, reading this provider will rethrow the thrown exception.

  • didChangeDependency can be used to differentiate a rebuild caused by watch from one caused by refresh/invalidate.

Implementation

@override
void create({required bool didChangeDependency}) {
  final provider = this.provider as NotifierProviderBase<NotifierT, T>;

  final notifierResult = _notifierNotifier.result ??= Result.guard(() {
    return provider._createNotifier().._setElement(this);
  });

  // If the Notifier failed to create (such as if the constructor has an assert exception),
  // then we purposefully rethrow the error.
  // This way, doing `watch(provider)` will rethrow the error.
  final notifier = notifierResult.requireState;

  setState(provider.runNotifierBuild(notifier));
}