toCamelCase function

String toCamelCase(
  1. String snakeCase
)

Converts a snake_case field name to lowerCamelCase.

Splits on underscores and capitalizes the first letter of each segment after the first. Leading/trailing underscores are preserved as empty segments (dropped by split), matching protobuf's canonical JSON name generation.

Examples: "foo_bar" -> "fooBar" "foo_bar_baz" -> "fooBarBaz" "foo" -> "foo" "" -> ""

Implementation

String toCamelCase(String snakeCase) {
  if (snakeCase.isEmpty) return snakeCase;
  // Preserve leading underscores.
  int leadingUnderscores = 0;
  while (leadingUnderscores < snakeCase.length &&
      snakeCase[leadingUnderscores] == '_') {
    leadingUnderscores++;
  }
  final prefix = snakeCase.substring(0, leadingUnderscores);
  final rest = snakeCase.substring(leadingUnderscores);
  if (rest.isEmpty) return snakeCase;
  final parts = rest.split('_');
  final buffer = StringBuffer(prefix);
  buffer.write(parts[0]);
  for (int i = 1; i < parts.length; i++) {
    final part = parts[i];
    if (part.isEmpty) continue;
    buffer.write(part[0].toUpperCase());
    if (part.length > 1) {
      buffer.write(part.substring(1));
    }
  }
  return buffer.toString();
}