setProvider method
Implementation
Future<void> setProvider(FeatureProvider provider) async {
_logger.info('Setting provider: ${provider.name}');
try {
if (provider.state == ProviderState.NOT_READY) {
await provider.initialize();
}
_provider = provider;
_providerRegistry[provider.metadata.name] = provider;
_providerStreamController.add(provider);
if (provider.state == ProviderState.READY) {
_emitEvent(
OpenFeatureEventType.PROVIDER_READY,
'Provider ready: ${provider.name}',
providerMetadata: provider.metadata,
);
} else {
_emitEvent(
OpenFeatureEventType.PROVIDER_ERROR,
'Provider not ready: ${provider.name}',
data: {'state': provider.state.name},
providerMetadata: provider.metadata,
errorCode: _errorCodeFrom(null, state: provider.state),
);
}
} catch (error) {
_logger.severe('Failed to initialize provider: $error');
_provider = provider;
_providerRegistry[provider.metadata.name] = provider;
_providerStreamController.add(provider);
_emitEvent(
OpenFeatureEventType.PROVIDER_ERROR,
'Provider initialization failed: ${provider.name}',
data: error,
providerMetadata: provider.metadata,
errorCode: _errorCodeFrom(error),
);
}
}