encodeInt32Field function
Encodes an int32 field: tag(fieldNumber, VARINT) + varint(value).
For negative values, protobuf encodes int32 as a 10-byte varint (sign-
extended to 64 bits). Dart's int is already 64-bit two's-complement,
so passing a negative value to encodeVarint naturally produces the
correct encoding.
Returns buffer unchanged if value is 0 (proto3 default).
Implementation
List<int> encodeInt32Field(List<int> buffer, int fieldNumber, int value) {
if (value == 0) return buffer;
encodeTag(buffer, fieldNumber, _wireTypeVarint);
encodeVarint(buffer, value);
return buffer;
}