evaluateVariant method
Implementation
VariantEvaluationResponse evaluateVariant({
required String flagKey,
required String entityId,
required Map<String, dynamic> context,
}) {
if (flagKey.isEmpty) {
throw ValidationError('flagKey must not be empty');
}
if (entityId.isEmpty) {
throw ValidationError('entityId must not be empty');
}
final request = EvaluationRequest(
flagKey: flagKey,
entityId: entityId,
context: context,
);
final requestJson = jsonEncode(request.toJson());
final requestUtf8 = requestJson.toNativeUtf8();
final resultPtr =
_bindings.evaluate_variant(_engine, requestUtf8.cast<Char>());
final result = _pointerToString(resultPtr);
_bindings.destroy_string(resultPtr);
calloc.free(requestUtf8);
final response = Result<VariantEvaluationResponse>.fromJson(
jsonDecode(result) as Map<String, dynamic>,
(json) =>
VariantEvaluationResponse.fromJson(json as Map<String, dynamic>),
);
if (response.status != Status.success) {
throw EvaluationError(
'Failed to evaluate variant: ${response.errorMessage}');
}
return response.result!;
}