BaseProvider<T extends BaseBloc>.create constructor

BaseProvider<T extends BaseBloc>.create({
  1. required Key key,
  2. required BaseInherited<T> inherited,
  3. BaseFunction<T>? initialize,
  4. BaseFunction<T>? update,
})

Implementation

factory BaseProvider.create({
  required Key key,
  required BaseInherited<T> inherited,
  BaseFunction<T>? initialize,
  BaseFunction<T>? update,
}) {
  if (_instances[key] == null) {
    _instances[key] = BaseProvider<T>._init(key: key, inherited: inherited);
    if (initialize != null)
      initialize(_instances[key]!._inherited._bloc as T,
          _instances[key]?._subscriptions);
    _instances[key]?._subscriptions.add(
          _instances[key]?._inherited._bloc.exceptionStream?.listen(
                (BaseException? e) =>
                    _instances[key]?._inherited.exception?.add(e),
              ) as StreamSubscription<BaseException?>,
        );
  } else {
    if (update != null) {
      update(_instances[key]!._inherited._bloc as T,
          _instances[key]!._subscriptions);
    }
    _instances[key] = BaseProvider<T>._copy(key: key, inherited: inherited);
  }
  return _instances[key]! as BaseProvider<T>;
}