putStringList method

void putStringList(
  1. int fieldId,
  2. List<String> values
)

Writes a List<String> field.

Implementation

void putStringList(int fieldId, List<String> values) {
  final encoded = <List<int>>[];
  var payload = VxsVarint.size(values.length);
  for (final value in values) {
    final bytes = _utf8Fallback(value);
    encoded.add(bytes);
    payload += VxsVarint.size(bytes.length) + bytes.length;
  }
  _beginEntry(fieldId, VxsWire.lengthDelimited);
  _writeVarint(payload);
  _writeVarint(values.length);
  for (final bytes in encoded) {
    _writeVarint(bytes.length);
    _ensure(bytes.length);
    _data.setRange(_pos, _pos + bytes.length, bytes);
    _pos += bytes.length;
  }
}