truncateText static method

String truncateText(
  1. String text,
  2. TextStyle style,
  3. double maxWidth, {
  4. String ellipsis = '...',
})

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';
}