resolveBooleanFlag method

  1. @override
Future<FlagEvaluationResult<bool>> resolveBooleanFlag(
  1. String flagKey,
  2. bool defaultValue, {
  3. Map<String, dynamic>? context,
})
override

Abstract methods for actual flag resolution

Implementation

@override
Future<FlagEvaluationResult<bool>> resolveBooleanFlag(
  String flagKey,
  bool defaultValue, {
  Map<String, dynamic>? context,
}) async {
  _checkState();

  if (!_flags.containsKey(flagKey)) {
    return FlagEvaluationResult.error(
      flagKey,
      defaultValue,
      ErrorCode.FLAG_NOT_FOUND,
      'Flag "$flagKey" not found',
      evaluatorId: name,
    );
  }

  final value = _flags[flagKey];
  if (value is! bool) {
    return FlagEvaluationResult.error(
      flagKey,
      defaultValue,
      ErrorCode.TYPE_MISMATCH,
      'Flag "$flagKey" is not a boolean, got ${value.runtimeType}',
      evaluatorId: name,
    );
  }

  return FlagEvaluationResult(
    flagKey: flagKey,
    value: value,
    reason: 'STATIC',
    evaluatedAt: DateTime.now(),
    evaluatorId: name,
  );
}