setProviderAndWait method
Set provider and wait for it to be ready
Implementation
Future<void> setProviderAndWait(FeatureProvider provider) async {
_logger.info('Setting provider and waiting: ${provider.name}');
try {
// Initialize if needed
if (provider.state == ProviderState.NOT_READY) {
await provider.initialize();
}
// Wait for READY state
if (provider.state != ProviderState.READY) {
throw ProviderException(
'Provider failed to reach READY state: ${provider.state}',
code: ErrorCode.PROVIDER_NOT_READY,
);
}
_provider = provider;
_providerStreamController.add(provider);
_emitEvent(
OpenFeatureEventType.PROVIDER_READY,
'Provider ready: ${provider.name}',
);
} catch (error) {
_logger.severe('Failed to initialize provider: $error');
_provider = provider;
_providerStreamController.add(provider);
_emitEvent(
OpenFeatureEventType.PROVIDER_ERROR,
'Provider initialization failed: ${provider.name}',
data: error,
);
rethrow;
}
}