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 _StateProviderBase<T>;
  final initialState = provider._create(this);

  final controller = StateController(initialState);
  _controllerNotifier.result = Result.data(controller);

  _removeListener = controller.addListener(
    fireImmediately: true,
    (state) {
      _stateNotifier.result = _controllerNotifier.result;
      setState(state);
    },
  );
}