setProvider method

Future<void> setProvider(
  1. FeatureProvider provider
)

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,
    );
  }

}