shutdownProvider method

Future<void> shutdownProvider()

Shutdown the current provider after its final binding is removed.

Implementation

Future<void> shutdownProvider() async {
  _logger.info('Shutting down provider: ${_provider.name}');
  final provider = _provider;
  final replacement = _ImmediateReadyProvider();
  final requestGeneration = ++_defaultBindingGeneration;
  _requestedDefaultProvider = replacement;

  try {
    await _lifecycleManager.unbindDefault(provider);
  } catch (e) {
    _logger.severe('Error during provider shutdown: $e');
    _emitEvent(
      OpenFeatureEventType.PROVIDER_ERROR,
      'Provider shutdown failed: ${provider.name}',
      data: e,
      provider: provider,
      providerMetadata: provider.metadata,
      errorCode: _errorCodeFrom(e),
    );
  }

  if (requestGeneration == _defaultBindingGeneration) {
    _installDefaultProvider(replacement);
  }
}