build method
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();
}