valueToParameterValue method

FutureOr<EncodingValue<String, Object?>> valueToParameterValue(
  1. EncodingContext context,
  2. dynamic value, {
  3. String? fieldKey,
  4. Type? fieldType,
  5. bool valueAsList = false,
})

Implementation

FutureOr<EncodingValue<String, Object?>> valueToParameterValue(
    EncodingContext context, dynamic value,
    {String? fieldKey, Type? fieldType, bool valueAsList = false}) {
  if (value == null || value == Null) {
    return _valueToParameterValueImpl(value, fieldType,
        key: fieldKey, valueAsList: valueAsList);
  }

  if (value is Iterable) {
    var values = _valueToList(value);

    if (values.isEmpty) {
      return EncodingValueNull(
          fieldKey ?? '?', fieldType, encodeEncodingValueNull);
    } else if (values.length == 1) {
      var v = value.first;
      value = v;
    }
  }

  if (value is ConditionParameter) {
    return conditionParameterToParameterValue(
        value, context, fieldKey, fieldType,
        valueAsList: valueAsList);
  } else if (value is List &&
      value.whereType<ConditionParameter>().isNotEmpty) {
    var parametersValues = value.map((v) {
      if (v is ConditionParameter) {
        return conditionParameterToParameterValue(
            value, context, fieldKey, fieldType,
            valueAsList: valueAsList);
      } else {
        return _valueToParameterValueImpl(value, fieldType,
            key: fieldKey, valueAsList: valueAsList);
      }
    }).resolveAll();

    return parametersValues.resolveMapped((values) => EncodingValueList(
        fieldKey ?? '?', fieldType, values, encodeEncodingValueList));
  } else {
    return _valueToParameterValueImpl(value, fieldType,
        key: fieldKey, valueAsList: valueAsList);
  }
}