evaluateFlag method

  1. @override
Future<DSFeatureFlagEvaluationResult> evaluateFlag(
  1. String flagKey, {
  2. Map<String, dynamic>? context,
})
override

Evaluates a feature flag and returns detailed evaluation results.

Implementation

@override
Future<DSFeatureFlagEvaluationResult> evaluateFlag(
  String flagKey, {
  Map<String, dynamic>? context,
}) async {
  try {
    final response = await http.post(
      Uri.parse('$apiUrl/evaluate'),
      headers: {
        'Authorization': 'Bearer $apiKey',
        'Content-Type': 'application/json',
      },
      body: jsonEncode({'flagKey': flagKey, 'context': context}),
    );

    if (response.statusCode == 200) {
      final data = jsonDecode(response.body) as Map<String, dynamic>;
      return DSFeatureFlagEvaluationResult(
        value: data['value'],
        reason: data['reason'] ?? 'default',
        variant: data['variant'] ?? '',
      );
    } else {
      print('GoFeatureFlagProvider Error: ${response.body}');
      throw Exception('Failed to evaluate feature flag');
    }
  } catch (e) {
    print('Error in GoFeatureFlagProvider: $e');
    return DSFeatureFlagEvaluationResult(
      value: null,
      reason: 'error',
      variant: '',
    );
  }
}