singletonAsync<T extends Object> method

Future<void> singletonAsync<T extends Object>(
  1. FactoryFuncAsync<T> factoryFunc, {
  2. String? instanceName,
  3. bool? signalsReady,
  4. bool preResolve = false,
  5. Iterable<Type>? dependsOn,
  6. Set<String>? registerFor,
  7. DisposingFunc<T>? dispose,
})

a conditional wrapper method for getIt.registerSingletonAsync it only registers if _canRegister returns true

Implementation

Future<void> singletonAsync<T extends Object>(
  FactoryFuncAsync<T> factoryFunc, {
  String? instanceName,
  bool? signalsReady,
  bool preResolve = false,
  Iterable<Type>? dependsOn,
  Set<String>? registerFor,
  DisposingFunc<T>? dispose,
}) {
  if (_canRegister(registerFor)) {
    if (preResolve) {
      return factoryFunc().then(
        (instance) => getIt.registerSingleton<T>(
          instance,
          instanceName: instanceName,
          signalsReady: signalsReady,
        ),
      );
    } else {
      getIt.registerSingletonAsync<T>(
        factoryFunc,
        instanceName: instanceName,
        dependsOn: dependsOn,
        signalsReady: signalsReady,
        dispose: dispose,
      );
    }
  }
  return Future.value(null);
}