truncateText static method
Truncates text to fit within a width, adding ellipsis.
Implementation
static String truncateText(
String text,
TextStyle style,
double maxWidth, {
String ellipsis = '...',
}) {
final fullSize = measureText(text, style);
if (fullSize.width <= maxWidth) return text;
final ellipsisSize = measureText(ellipsis, style);
final availableWidth = maxWidth - ellipsisSize.width;
if (availableWidth <= 0) return ellipsis;
// Binary search for the right truncation point
int low = 0;
int high = text.length;
while (low < high) {
final mid = (low + high + 1) ~/ 2;
final truncated = text.substring(0, mid);
final size = measureText(truncated, style);
if (size.width <= availableWidth) {
low = mid;
} else {
high = mid - 1;
}
}
if (low == 0) return ellipsis;
return '${text.substring(0, low)}$ellipsis';
}