LyricLayout.updatePainters constructor

LyricLayout.updatePainters(
  1. LyricLayout layout
)

Implementation

factory LyricLayout.updatePainters(
  LyricLayout layout,
) {
  final lineMetrics = <LineMetrics>[];
  for (var line in layout.metrics) {
    line.textPainter.markNeedsLayout();
    line.activeTextPainter.markNeedsLayout();
    line.translationTextPainter.markNeedsLayout();
    line.textPainter.layout(maxWidth: layout.viewSize.width);
    line.activeTextPainter.layout(maxWidth: layout.viewSize.width);
    final hasTranslation = line.translationTextPainter.text != null;
    if (hasTranslation) {
      line.translationTextPainter.layout(maxWidth: layout.viewSize.width);
    }
    line.words;
    final words = _calcWordMetrics(line.line, line.textPainter,
        line.activeTextPainter, line.translationTextPainter);
    lineMetrics.add(line.copyWith(
      height: line.textPainter.height,
      width: line.textPainter.width,
      activeWidth: line.activeTextPainter.width,
      activeHeight: line.activeTextPainter.height,
      translationWidth:
          hasTranslation ? line.translationTextPainter.width : 0,
      translationHeight:
          hasTranslation ? line.translationTextPainter.height : 0,
      activeMetrics: line.activeTextPainter.computeLineMetrics(),
      metrics: line.textPainter.computeLineMetrics(),
      words: words,
    ));
  }
  return LyricLayout._internal(
    layout.metrics,
    layout.style,
    layout.viewSize,
    layout.selectionAnchorPosition,
    layout.activeAnchorPosition,
  );
}