getInstanceFromCacheAsync<MInstance extends MvvmInstance, InputState> method

Future<MInstance> getInstanceFromCacheAsync<MInstance extends MvvmInstance, InputState>(
  1. String id, {
  2. dynamic params,
  3. int? index,
  4. String? scopeId,
  5. bool withoutConnections = false,
})

Implementation

Future<MInstance>
    getInstanceFromCacheAsync<MInstance extends MvvmInstance, InputState>(
  String id, {
  dynamic params,
  int? index,
  String? scopeId,
  bool withoutConnections = false,
}) async {
  final scope = scopeId ?? BaseScopes.global;

  if (!container.contains(scope, id, index)) {
    performCheckForCyclicDependencies(id, index);

    final instance = await constructAndInitializeInstanceAsync<MInstance>(
      id,
      params: params,
    );

    container.addObjectInScope(
      object: instance,
      type: id,
      scopeId: scope,
    );

    finishBuildingInstance(id, index);

    return instance;
  }

  final instance = container.getObjectInScope(
    type: id,
    scopeId: scope,
    index: index ?? 0,
  ) as MInstance;

  if (!instance.isInitialized) {
    if (withoutConnections) {
      instance.initializeWithoutConnections(params);
      await instance.initializeWithoutConnectionsAsync();
    } else {
      instance.initialize(params);
      await instance.initializeAsync();
    }
  }

  return instance;
}