getValueDetails<T> method
Future<EvaluationDetails<T> >
getValueDetails<T>({
- required String key,
- required T defaultValue,
- ConfigCatUser? user,
Gets the value and evaluation details of a feature flag or setting identified by the given key
.
key
is the identifier of the feature flag or setting.
user
is the user object to identify the caller.
Implementation
Future<EvaluationDetails<T>> getValueDetails<T>({
required String key,
required T defaultValue,
ConfigCatUser? user,
}) async {
final evalUser = user ?? _defaultUser;
try {
final result = await _getSettings();
if (result.isEmpty) {
final err =
'Config JSON is not present when evaluating setting \'$key\'. Returning the `defaultValue` parameter that you specified in your application: \'$defaultValue\'.';
_errorReporter.error(1000, err);
final details =
EvaluationDetails.makeError(key, defaultValue, err, evalUser);
hooks.invokeFlagEvaluated(details);
return details;
}
final setting = result.settings[key];
if (setting == null) {
final err =
'Failed to evaluate setting \'$key\' (the key was not found in config JSON). Returning the `defaultValue` parameter that you specified in your application: \'$defaultValue\'. Available keys: [${result.settings.keys.map((e) => '\'$e\'').join(', ')}].';
_errorReporter.error(1001, err);
final details =
EvaluationDetails.makeError(key, defaultValue, err, evalUser);
hooks.invokeFlagEvaluated(details);
return details;
}
return _evaluate(key, setting, evalUser, result.fetchTime);
} catch (e, s) {
final err =
'Error occurred in the `getValueDetails` method while evaluating setting \'$key\'. Returning the `defaultValue` parameter that you specified in your application: \'$defaultValue\'.';
_errorReporter.error(1002, err, e, s);
final details =
EvaluationDetails.makeError(key, defaultValue, err, evalUser);
hooks.invokeFlagEvaluated(details);
return details;
}
}