drawRect static method

dynamic drawRect(
  1. dynamic canvas,
  2. dynamic path,
  3. dynamic paint,
  4. dynamic pathList,
)

Implementation

static drawRect(canvas, path, paint, pathList) {
  if (pathList == null || pathList.isEmpty) {
    return;
  }
  path.reset();
  int i = 0, il = pathList.length;
  for (; i < il; i++) {
    var d = pathList[i];
    if (d[0] == 'drawRect') {
      //移动到某个点
      path.moveTo(d[1][0], d[1][1]);
      if (d[1].length == 4) {
        final rect =
            Rect.fromLTWH(d[1][0], d[1][1], d[1][2], d[1][3]); // 左、顶、右、底坐标
        canvas.drawRect(rect, paint);
      } else {
        RRect rrect;
        if (d[1][4] is List) {
          //每个圆角自由控制
          rrect = RRect.fromRectAndCorners(
            Rect.fromLTWH(d[1][0], d[1][1], d[1][2], d[1][3]),
            topLeft: Radius.circular(d[1][4][0]),
            topRight: Radius.circular(d[1][4][1]),
            bottomRight: Radius.circular(d[1][4][2]),
            bottomLeft: Radius.circular(d[1][4][3]),
          );
        } else {
          //所有圆角一样
          rrect = RRect.fromRectAndCorners(
            Rect.fromLTWH(d[1][0], d[1][1], d[1][2], d[1][3]),
            topLeft: Radius.circular(d[1][4]),
            topRight: Radius.circular(d[1][4]),
            bottomRight: Radius.circular(d[1][4]),
            bottomLeft: Radius.circular(d[1][4]),
          );
        }
        canvas.drawRRect(rrect, paint);
      }
    }
  }
}