setProviderAndWait method

Future<void> setProviderAndWait(
  1. FeatureProvider provider
)

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