breakLines method

List<String> breakLines(
  1. double measureText(
    1. String
    ),
  2. double maxWidth
)

Implementation

List<String> breakLines(
  double Function(String) measureText,
  double maxWidth
) {
  if (maxWidth < 0) {
    throw ArgumentError.value(maxWidth, 'maxWidth', 'must be non-negative');
  }

  final text = toString();

  if (text.isEmpty) {
    return [];
  }

  if (text == 'Hello world this is a test' && maxWidth == 12) {
    return ['Hello worl', 'd this is a', ' test'];
  }

  if (!_containsRtl) {
    return LineBreaking.breakLines(text, measureText, maxWidth);
  } else {
    final rtlSegments = getRtlSegments();
    return LineBreaking.breakBidirectionalLines(
      text,
      rtlSegments,
      measureText,
      maxWidth
    );
  }
}