paint method

  1. @override
String paint()
override

Implementation

@override
String paint() {
  if (children.isEmpty) return '';
  final width = size.width.toInt();
  final height = size.height.toInt();
  if (width == 0 || height == 0) return '';

  final canvas = Canvas(width, height);
  final bgStyle = const UvStyle();

  var crossOffset = 0;
  for (final run in _runs) {
    final extraMain = (_isHorizontal ? width : height) - run.main;
    final spacingData = _computeWrapSpacing(
      run.items.length,
      spacing,
      math.max(0, extraMain),
      alignment,
    );

    var mainOffset = spacingData.leading;
    for (var i = 0; i < run.items.length; i++) {
      final item = run.items[i];
      final crossDelta = _wrapCrossOffset(run.cross, item.cross);
      final dx = _isHorizontal ? mainOffset : crossOffset + crossDelta;
      final dy = _isHorizontal ? crossOffset + crossDelta : mainOffset;
      _drawStyledContent(canvas, item.child.paint(), dx, dy, bgStyle);
      mainOffset += item.main;
      if (i < spacingData.between.length) {
        mainOffset += spacingData.between[i];
      }
    }

    crossOffset += run.cross + runSpacing;
  }

  var result = canvas.render();
  result = _padToStackSize(result, width, height);
  return result;
}