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