paint method

  1. @override
void paint(
  1. Context context
)
override

Draw itself and its children, according to the calculated box.offset

Implementation

@override
void paint(Context context) {
  super.paint(context);

  if (child != null) {
    final resolvedAlignment = alignment.resolve(Directionality.of(context));
    final childSize = child!.box!.size;
    final sizes = applyBoxFit(fit, childSize, box!.size);
    final scaleX = sizes.destination!.x / sizes.source!.x;
    final scaleY = sizes.destination!.y / sizes.source!.y;
    final sourceRect = resolvedAlignment.inscribe(
        sizes.source!, PdfRect.fromPoints(PdfPoint.zero, childSize));
    final destinationRect =
        resolvedAlignment.inscribe(sizes.destination!, box!);

    final mat =
        Matrix4.translationValues(destinationRect.x, destinationRect.y, 0)
          ..scale(scaleX, scaleY, 1)
          ..translate(-sourceRect.x, -sourceRect.y);

    context.canvas
      ..saveContext()
      ..drawBox(box!)
      ..clipPath()
      ..setTransform(mat);
    child!.paint(context);
    context.canvas.restoreContext();
  }
}