computeLines static method

Compute the lines used by RoundedBackgroundTextPainter.

The text painter must have been already laid out:

final painter = TextPainter(
 text: const TextSpan(text: testText),
);
painter.layout();
final lines = RoundedBackgroundTextPainter.computeLines(painter);

Implementation

@visibleForTesting

/// Compute the lines used by [RoundedBackgroundTextPainter].
///
/// The text [painter] must have been already laid out:
/// ```dart
/// final painter = TextPainter(
///  text: const TextSpan(text: testText),
/// );
/// painter.layout();
/// final lines = RoundedBackgroundTextPainter.computeLines(painter);
/// ```
static List<List<LineMetricsHelper>> computeLines(TextPainter painter) {
  final metrics = painter.computeLineMetrics();

  final helpers = metrics.map((lineMetric) {
    return LineMetricsHelper(lineMetric, metrics.length);
  });

  final List<List<LineMetricsHelper>> lineInfos = [[]];

  for (final line in helpers) {
    if (line.isEmpty) {
      lineInfos.add([]);
    } else {
      lineInfos.last.add(line);
    }
  }

  return lineInfos;
}