addEncodingParameter method

String addEncodingParameter(
  1. String suggestedKey,
  2. Object? value, {
  3. String parameterPrefix = 'param_',
})

Implementation

String addEncodingParameter(String suggestedKey, Object? value,
    {String parameterPrefix = 'param_'}) {
  var encodingParameters = (this.encodingParameters ??= <String, Object?>{});

  var namedParameters = this.namedParameters;
  if (namedParameters == null || !namedParameters.containsKey(suggestedKey)) {
    encodingParameters[suggestedKey] = value;
    return suggestedKey;
  }

  for (var i = 0; i < 1000; ++i) {
    var k = i == 0
        ? '$parameterPrefix$suggestedKey'
        : '$parameterPrefix$suggestedKey$i';

    if (!namedParameters.containsKey(k)) {
      encodingParameters[k] = value;
      return k;
    }
  }

  throw StateError("Can't create encoding parameter: $suggestedKey = $value");
}