registerAndInitService<TService extends ServiceMixin> method

Resolvable<Unit> registerAndInitService<TService extends ServiceMixin>(
  1. TService service, {
  2. TOnRegisterCallback<TService>? onRegister,
  3. TOnUnregisterCallback<TService>? onUnregister,
  4. Entity groupEntity = const DefaultEntity(),
  5. bool enableUntilExactlyK = false,
})
inherited

Implementation

Resolvable<Unit> registerAndInitService<TService extends ServiceMixin>(
  TService service, {
  TOnRegisterCallback<TService>? onRegister,
  TOnUnregisterCallback<TService>? onUnregister,
  Entity groupEntity = const DefaultEntity(),
  bool enableUntilExactlyK = false,
}) {
  UNSAFE:
  return register<TService>(
    service,
    onRegister: (service) {
      return service.init().unwrap();
    },
    onUnregister: (serviceOpt) {
      final service = serviceOpt.unwrap();
      return consec(service.dispose().value, (disposeResult) {
        disposeResult.unwrap();
        return consec(onUnregister, (_) => service);
      });
    },
    groupEntity: groupEntity,
    enableUntilExactlyK: enableUntilExactlyK,
  ).toUnit();
}