evaluateFlag method
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: '',
);
}
}