0

我必须创建一条如下所示的曲线:

在此处输入图像描述

这是我试图制作该曲线的代码。但它正在形成一条直线。

ClipPath(
  clipper: ArrowClipper(),
  child: Container(
    width: 35,
    height: 110,
    color: Color(0xFF3F3C5F),
    child: isOpenedAsync.data
           ? Icon(Icons.chevron_right)
           : Icon(Icons.chevron_left),
    ),
),

快船级


class ArrowClipper extends CustomClipper<Path> {
  @override
  getClip(Size size) {
    Paint paint = Paint();
    paint.color = Variables.backgroundColor;
    Path path = Path();
    final w = size.width; // 35
    final h = size.height; // 110

    path.moveTo(w, 0);
    path.quadraticBezierTo(w, 2, w - 2, 2);
    path.quadraticBezierTo(1, (h/2) - 2, 0, h/2);
    path.quadraticBezierTo(0, h, 2, (h/2) + 2);
    path.quadraticBezierTo(w-2, h - 2, w, h);
    path.close();

    return path;
  }

  @override
  bool shouldReclip(CustomClipper oldClipper) {
    return true;
  }
}

上述代码的输出如下:

在此处输入图像描述

4

1 回答 1

0

感谢@Andreas。而不是path.quadraticBezierTo(),,我需要使用path.cubicTo()

    path.moveTo(w, 0);
    path.cubicTo(
        w, h * 0.35,
        w * 0.025, h * 0.4,
        0, h * 0.5);
    path.cubicTo(
        w * 0.025, h * 0.7,
        w, h * 0.6,
        w, h);
    path.close();
于 2020-09-03T03:05:28.817 回答