FeatureClient constructor

FeatureClient({
  1. required ClientMetadata metadata,
  2. required HookManager hookManager,
  3. required EvaluationContext defaultContext,
  4. EvaluationContext? apiContext,
  5. EvaluationContext apiContextResolver()?,
  6. FeatureProvider? provider,
  7. FeatureProvider providerResolver()?,
  8. ProviderState providerStatusResolver(
    1. FeatureProvider
    )?,
  9. TransactionContextManager? transactionManager,
  10. Stream<OpenFeatureEvent>? eventStream,
})

Implementation

FeatureClient({
  required this.metadata,
  required HookManager hookManager,
  required EvaluationContext defaultContext,
  EvaluationContext? apiContext,
  EvaluationContext Function()? apiContextResolver,
  FeatureProvider? provider,
  FeatureProvider Function()? providerResolver,
  ProviderState Function(FeatureProvider)? providerStatusResolver,
  TransactionContextManager? transactionManager,
  Stream<OpenFeatureEvent>? eventStream,
}) : _hookManager = hookManager,
     _defaultContext = defaultContext,
     _apiContext = apiContext ?? const EvaluationContext(attributes: {}),
     _apiContextResolver = apiContextResolver,
     _fallbackProvider = provider ?? InMemoryProvider({}),
     _providerResolver = providerResolver,
     _providerStatusResolver = providerStatusResolver,
     _transactionManager = transactionManager ?? TransactionContextManager() {
  if (_providerResolver == null &&
      providerStatus == ProviderState.NOT_READY) {
    unawaited(
      this.provider.initialize().catchError((Object error, StackTrace stack) {
        _logger.severe(
          'Provider initialization failed: $error',
          error,
          stack,
        );
      }),
    );
  }

  if (eventStream != null) {
    _eventSubscription = eventStream.listen(_forwardEvent);
  }
}