setProvider method
Implementation
Future<void> setProvider(FeatureProvider provider) async {
_logger.info('Setting provider: ${provider.name}');
try {
// Only initialize if provider is NOT_READY
if (provider.state == ProviderState.NOT_READY) {
await provider.initialize();
}
_provider = provider;
_providerStreamController.add(provider);
_emitEvent(
OpenFeatureEventType.providerChanged,
'Provider changed to ${provider.name}',
);
} catch (error) {
_logger.severe('Failed to initialize provider: $error');
// Per OpenFeature spec: keep provider in ERROR state
_provider = provider;
_providerStreamController.add(provider);
_emitEvent(
OpenFeatureEventType.error,
'Provider initialization failed: ${provider.name}',
data: error,
);
}
}