getClient method

FeatureClient getClient(
  1. String name, {
  2. String? domain,
})

Get or create a client using the legacy positional name.

Implementation

FeatureClient getClient(String name, {String? domain}) {
  FeatureProvider resolveProvider() =>
      _resolveProviderForClient(name, domain);
  final selectedProvider = resolveProvider();
  EvaluationContext resolveApiContext() =>
      _globalContext?.toEvaluationContext() ??
      const EvaluationContext(attributes: {});

  final hookManager = HookManager();

  return FeatureClient(
    metadata: ClientMetadata(name: name, domain: domain ?? name),
    hookManager: hookManager,
    apiHooksResolver: () => List.unmodifiable(_evaluationHooks),
    apiContext: resolveApiContext(),
    apiContextResolver: resolveApiContext,
    defaultContext: const EvaluationContext(attributes: {}),
    provider: selectedProvider,
    providerResolver: resolveProvider,
    providerStatusResolver: (provider) => _disposed || _resetting
        ? ProviderState.NOT_READY
        : _lifecycleManager.statusOf(provider),
    transactionManager: _transactionManager,
    // Permanent disposal must not make client creation throw (1.1.7).
    // A detached client still uses the not-ready resolver and safe defaults.
    eventScope: _disposed
        ? null
        : _eventDispatcher.scope(
            provider: resolveProvider,
            domain: domain ?? name,
            current: (type) => _currentEvents(resolveProvider(), type),
          ),
  );
}