Flutter 如何在使用CustomPainter drawPath创建的形状内填充颜色?

Flutter 如何在使用CustomPainter drawPath创建的形状内填充颜色?,flutter,flutter-layout,Flutter,Flutter Layout,因此,我使用CustomPainter中的drawPath和drawArc创建了一个形状,绘制样式是stroke,但当我将其更改为fill时,它只填充圆弧,而不是整个形状。 我想用颜色填充我创建的形状,那么如何用特定的颜色填充形状呢 class CustomShapeCard extends CustomPainter { CustomShapeCard({@required this.strokeWidth, @required this.color}); final double

因此,我使用CustomPainter中的drawPath和drawArc创建了一个形状,绘制样式是stroke,但当我将其更改为fill时,它只填充圆弧,而不是整个形状。 我想用颜色填充我创建的形状,那么如何用特定的颜色填充形状呢


class CustomShapeCard extends CustomPainter {
  CustomShapeCard({@required this.strokeWidth, @required this.color});

  final double strokeWidth;
  final Color color;

  @override
  void paint(Canvas canvas, Size size) {
    var paint = Paint()
      ..style = PaintingStyle.stroke
      ..strokeWidth = strokeWidth
      ..color = color;

    var path = Path();

    path.moveTo(size.width * 0.1, size.height * 0.2);
    path.lineTo(size.width * 0.1, size.height * 0.9);
    canvas.drawPath(path, paint);

    canvas.drawArc(
      Rect.fromCenter(
        center: Offset((size.width * 0.2) - 14, size.height * 0.9),
        height: 50,
        width: 50,
      ),
      math.pi / 2,
      math.pi / 2,
      false,
      paint,
    );

    path.moveTo((size.width * 0.2) - 14, (size.height * 0.9) + 25);
    path.lineTo((size.width * 0.9) - 25, size.height * 0.9 + 25);
    canvas.drawPath(path, paint);

    canvas.drawArc(
      Rect.fromCenter(
        center: Offset((size.width * 0.9) - 25, size.height * 0.9),
        height: 50,
        width: 50,
      ),
      math.pi / 2,
      -math.pi / 2,
      false,
      paint,
    );

    path.moveTo((size.width * 0.9), (size.height * 0.9));
    path.lineTo(size.width * 0.9, size.height * 0.35);
    canvas.drawPath(path, paint);

    canvas.drawArc(
      Rect.fromCenter(
        center: Offset((size.width * 0.9) - 25, size.height * 0.35),
        height: 50,
        width: 50,
      ),
      -math.pi / 2,
      math.pi / 2,
      false,
      paint,
    );

    path.moveTo((size.width * 0.9) - 25, (size.height * 0.35) - 25);
    path.lineTo(size.width * 0.25, (size.height * 0.35) - 25);
    canvas.drawPath(path, paint);

    canvas.drawArc(
      Rect.fromCenter(
        center: Offset((size.width * 0.25), (size.height * 0.35) - 50),
        height: 50,
        width: 50,
      ),
      math.pi / 2,
      math.pi / 3,
      false,
      paint,
    );

    path.moveTo((size.width * 0.25) - 20, (size.height * 0.35) - 35);
    path.lineTo(size.width * 0.1, size.height * 0.2);
    canvas.drawPath(path, paint);
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return false;
  }
}
当绘画风格是笔划时,我得到这个

当我改变绘画风格来填充时


您不需要绘制所有的直线和圆弧,请参阅了解更多信息我目前正在尝试,因此没有更新,我打算在尝试完成后回复我使用ClipPath获得的,我没有使用ShapeOrder获得它,尽管您不需要绘制所有的直线和圆弧,请参阅了解更多信息我目前正在尝试,所以没有更新,我打算在尝试完成后回复我使用ClipPath得到的,但是我没有使用ShapeOrder得到它