build method

String build()

Builds and returns the concatenated label from the added parts.

This method concatenates all parts with proper text direction handling and spacing.

Implementation

String build() {
  if (_parts.isEmpty) {
    return '';
  }

  if (_parts.length == 1) {
    final (String text, TextDirection? _) = _parts.first;
    return text;
  }

  // Concatenate multiple parts with proper text direction handling
  final StringBuffer buffer = StringBuffer();
  final (String firstText, TextDirection? _) = _parts.first;
  buffer.write(firstText);

  for (final (String partText, TextDirection? partTextDirection) in _parts.skip(1)) {
    final TextDirection? partDirection = partTextDirection ?? textDirection;

    if (separator.isNotEmpty) {
      buffer.write(separator);
    }

    String processedText = partText;
    if (textDirection != null && partDirection != null && textDirection != partDirection) {
      final String directionalEmbedding = switch (partDirection) {
        TextDirection.rtl => Unicode.RLE,
        TextDirection.ltr => Unicode.LRE,
      };
      processedText = directionalEmbedding + partText + Unicode.PDF;
    }

    buffer.write(processedText);
  }

  return buffer.toString();
}