shutdownProvider method
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);
}
}