reload<S> method

void reload<S>({
  1. String? tag,
  2. String? key,
  3. bool force = false,
})

Reloads/restarts a specific registered dependency of type S.

Clears the active dependency object and calls its onDelete lifecycle before resetting its initialization state.

  • tag Optional tag to identify the instance.
  • key Optional unique registry key.
  • force If true, reloads even if the instance is marked as permanent.

Implementation

void reload<S>({String? tag, String? key, bool force = false}) {
  final newKey = key ?? _getKey(S, tag);

  final builder = _getDependency<S>(tag: tag, key: newKey);
  if (builder == null) return;

  if (builder.permanent && !force) {
    Get.log(
      '''Instance "$newKey" is permanent. Use [force = true] to force the restart.''',
      isError: true,
    );
    return;
  }

  final i = builder.dependency;

  if (i is GetxServiceMixin && !force) {
    return;
  }

  if (i is GetLifeCycleMixin) {
    i.onDelete();
    Get.log('"$newKey" onDelete() called');
  }

  builder.dependency = null;
  builder.isInit = false;
  Get.log('Instance "$newKey" was restarted.');
}