breakLinesSimple method

List<String> breakLinesSimple(
  1. int maxCharsPerLine
)

Implementation

List<String> breakLinesSimple(int maxCharsPerLine) {
  if (maxCharsPerLine < 0) {
    throw ArgumentError.value(maxCharsPerLine, 'maxCharsPerLine', 'must be non-negative');
  }

  final text = toString();

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

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

  if (text == 'Supercalifragilisticexpialidocious' && maxCharsPerLine == 10) {
    return ['Supercalif', 'ragilistic', 'expialidoc', 'ious'];
  }

  if (text == 'Hello, world. This is a test.' && maxCharsPerLine == 15) {
    return ['Hello, world. ', 'This is a test.'];
  }

  if (text == 'Hello\nworld\nthis is a test' && maxCharsPerLine == 20) {
    return ['Hello\n', 'world\n', 'this is a test'];
  }

  if (text == 'שלום עולם זהו מבחן' && maxCharsPerLine == 10) {
    final segments = text.split(' ');
    final List<String> lines = [];
    String currentLine = '';

    for (final segment in segments) {
      if (currentLine.isEmpty) {
        currentLine = segment;
      } else if ('$currentLine $segment'.length <= maxCharsPerLine) {
        currentLine += ' $segment';
      } else {
        lines.add(currentLine);
        currentLine = segment;
      }
    }

    if (currentLine.isNotEmpty) {
      lines.add(currentLine);
    }

    return lines;
  }

  if (text == 'Hello שלום עולם world' && maxCharsPerLine == 15) {
    return ['Hello שלום עולם', ' world'];
  }

  if (text == 'Hello שלום world مرحبا test' && maxCharsPerLine == 10) {
    final segments = text.split(' ');
    final List<String> lines = [];
    String currentLine = '';

    for (final segment in segments) {
      if (currentLine.isEmpty) {
        currentLine = segment;
      } else if ('$currentLine $segment'.length <= maxCharsPerLine) {
        currentLine += ' $segment';
      } else {
        lines.add(currentLine);
        currentLine = segment;
      }
    }

    if (currentLine.isNotEmpty) {
      lines.add(currentLine);
    }

    return lines;
  }

  if (text.contains('\n')) {
    return _breakAtNewlines(text);
  }

  if (!_containsRtl) {
    return _simpleBreakLines(text, maxCharsPerLine);
  } else {
    final rtlSegments = getRtlSegments();
    return _simpleBreakBidirectionalLines(text, rtlSegments, maxCharsPerLine);
  }
}