exportAsImage method

Future<Uint8List?> exportAsImage({
  1. Color? penColor,
  2. Color? backgroundColor,
  3. double? strokeWidthOverride,
  4. Size size = const Size(600, 300),
})

Exporta como imagen PNG en memoria

Implementation

Future<Uint8List?> exportAsImage({
  Color? penColor,
  Color? backgroundColor,
  double? strokeWidthOverride,
  Size size = const Size(600, 300),
}) async {
  if (_points.isEmpty) return null;

  final recorder = ui.PictureRecorder();
  final canvas = Canvas(recorder);

  final bgPaint =
      Paint()
        ..color = backgroundColor ?? exportBackgroundColor
        ..style = PaintingStyle.fill;

  final penPaint =
      Paint()
        ..color = penColor ?? exportPenColor
        ..strokeCap = StrokeCap.round
        ..strokeWidth = strokeWidthOverride ?? strokeWidth;

  canvas.drawRect(Rect.fromLTWH(0, 0, size.width, size.height), bgPaint);

  for (int i = 0; i < _points.length - 1; i++) {
    final p1 = _points[i]?.offset;
    final p2 = _points[i + 1]?.offset;

    if (p1 != null && p2 != null) {
      canvas.drawLine(p1, p2, penPaint);
    }
  }

  final picture = recorder.endRecording();
  final img = await picture.toImage(size.width.toInt(), size.height.toInt());
  final byteData = await img.toByteData(format: ui.ImageByteFormat.png);
  return byteData?.buffer.asUint8List();
}