getObjectFlag method

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

Implementation

@override
Future<FlagEvaluationResult<Map<String, dynamic>>> getObjectFlag(
  String flagKey,
  Map<String, dynamic> defaultValue, {
  Map<String, dynamic>? context,
}) async {
  final cacheKey = _generateCacheKey(flagKey, context);
  final cachedEntry = _getCacheEntry<Map<String, dynamic>>(cacheKey);

  if (cachedEntry != null) {
    return FlagEvaluationResult(
      flagKey: flagKey,
      value: cachedEntry.value,
      reason: 'CACHED',
      evaluatedAt: DateTime.now(),
      evaluatorId: name,
    );
  }

  final result = await resolveObjectFlag(
    flagKey,
    defaultValue,
    context: context,
  );

  if (result.errorCode == null) {
    _addToCache(cacheKey, result.value);
  }

  return result;
}