drawPolygon method

void drawPolygon(
  1. Canvas canvas,
  2. Paint paint,
  3. List<Offset> points, {
  4. bool close = false,
  5. bool refillPaint = true,
  6. double? maxWidth,
})

Implementation

void drawPolygon(
  Canvas canvas,
  Paint paint,
  List<Offset> points, {
  bool close = false,
  bool refillPaint = true,
  double? maxWidth,
}) {
  if (points.isEmpty) {
    return;
  }
  if (points.length == 1) {
    canvas.drawPoints(PointMode.points, points, paint);
    return;
  }

  Line line = Line(points,smoothRatio:smooth ? 0.4 : null,dashList: dash );
  Path path = line.path(close);

  if (refillPaint) {
    Rect? rect;
    if (shader != null) {
      if (close) {
        rect = path.getBounds();
      } else {
        double left = double.infinity;
        double top = double.infinity;
        double right = double.negativeInfinity;
        double bottom = double.negativeInfinity;
        for (var element in points) {
          left = min(element.dx, left);
          right = max(element.dx, right);
          top = min(element.dy, top);
          bottom = max(element.dy, bottom);
        }
      }
    }
    fillPaint(paint, rect: rect, maxStrokeWidth: maxWidth);
  }

  if (shadow != null) {
    path.drawShadows(canvas, Paint(), path, [shadow!]);
  }
  canvas.drawPath(path, paint);
}