isEnabled method

bool isEnabled(
  1. String toggleName, {
  2. bool defaultValue = false,
  3. Context? localContext,
})

Implementation

bool isEnabled(
  String toggleName, {
  bool defaultValue = false,
  Context? localContext,
}) {
  final defaultToggle = FeatureToggle(
    name: toggleName,
    strategies: null,
    description: null,
    enabled: defaultValue,
    strategy: null,
  );

  final featureToggle = _features?.features?.firstWhere(
    (toggle) => toggle.name == toggleName,
    orElse: () => defaultToggle,
  );

  final toggle = featureToggle ?? defaultToggle;
  final isEnabled = toggle.enabled ?? defaultValue;

  if (!isEnabled) {
    return false;
  }

  final strategies = toggle.strategies ?? [];

  if (strategies.isEmpty) {
    return isEnabled;
  }

  for (final strategy in strategies) {
    final foundStrategy = _activationStrategies.firstWhere(
      (activationStrategy) => activationStrategy.name == strategy.name,
      orElse: () => UnknownStrategy(),
    );

    final parameters = strategy.parameters ?? <String, dynamic>{};

    var currentContext = localContext ?? context;
    if (foundStrategy.isEnabled(parameters, currentContext)) {
      return true;
    }
  }

  return false;
}