So I want to achieve this shape using custom paint in flutter

and this is my code and the achieved result by far
const double _kCurveHeight = 30;
class ShapesPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final Path path = Path();
    path.moveTo(0, _kCurveHeight+_kCurveHeight); // Move to top-left corner
    path.quadraticBezierTo(size.width / 2, 0, size.width, _kCurveHeight+_kCurveHeight); // Draw curve to top-right corner
    path.lineTo(size.width, size.height - _kCurveHeight-_kCurveHeight); // Draw to bottom-right corner
    path.quadraticBezierTo(size.width / 2, size.height, 0, size.height - _kCurveHeight-_kCurveHeight); // Draw curve to bottom-left corner
    path.lineTo(0, _kCurveHeight+_kCurveHeight); // Draw to top-left corner to close the path
    final Paint paint = Paint();
    paint.shader = LinearGradient(
      colors: [
        Color(0xff361398),
        Color(0xff002764),
      ],
      begin: Alignment.topLeft,
      end: Alignment.topRight,
    ).createShader(Rect.fromLTWH(0, 0, size.width, size.height));
    canvas.drawPath(path, paint);
  }
  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return true;
  }
}
The Achieved Result
