import 'dart:ui';

import 'package:flutter/material.dart';

class BNBCustomPainter1 extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    debugPrint("Drawing navbar...");
    Paint paint =
        new Paint()
          ..color = const Color.fromARGB(255, 79, 76, 182)
          ..style = PaintingStyle.fill;

    // Path path = Path();
    // path.moveTo(0, 10); // Start
    // path.quadraticBezierTo(size.width * 0.20, 0, size.width * 0.35, 0);
    // path.quadraticBezierTo(size.width * 0.40, 0, size.width * 0.40, 20);
    // path.arcToPoint(
    //   Offset(size.width * 0.60, 20),
    //   radius: Radius.circular(20.0),
    //   clockwise: false,
    // );
    // path.quadraticBezierTo(size.width * 0.60, 0, size.width * 0.63, 0);
    // path.quadraticBezierTo(size.width * 0.88, 0, size.width, 10);
    // path.lineTo(size.width, size.height);
    // path.lineTo(0, size.height);
    // path.lineTo(0, 20);
    // canvas.drawShadow(path, Colors.black, 5, true);
    // canvas.drawPath(path, paint);

    // Path path = Path();

    // double cornerRadius = 35; // Radius untuk sisi kiri & kanan
    // double centerCircleRadius = 40; // Radius untuk lengkungan tengah

    // // Mulai dari sisi kiri bawah
    // path.moveTo(cornerRadius, size.height);

    // // Buat lengkungan di sisi kiri
    // path.quadraticBezierTo(0, size.height, 0, size.height - cornerRadius);

    // // Tarik garis lurus ke atas sebelum lengkungan tengah
    // path.lineTo(0, cornerRadius);

    // // Kurva sisi kiri menuju bagian atas
    // path.quadraticBezierTo(0, 0, cornerRadius, 0);

    // // Garis lurus ke bagian tengah sebelum lekukan
    // path.lineTo(size.width / 2 - centerCircleRadius - 20, 0);

    // // *** Lengkungan ke atas untuk ikon tengah ***
    // path.quadraticBezierTo(
    //   size.width / 2 - centerCircleRadius,
    //   -centerCircleRadius,
    //   size.width / 2,
    //   -centerCircleRadius,
    // );

    // path.quadraticBezierTo(
    //   size.width / 2 + centerCircleRadius,
    //   -centerCircleRadius,
    //   size.width / 2 + centerCircleRadius + 20,
    //   0,
    // );

    // // Lanjutkan garis ke kanan
    // path.lineTo(size.width - cornerRadius, 0);

    // // Kurva sisi kanan
    // path.quadraticBezierTo(size.width, 0, size.width, cornerRadius);

    // // Tarik garis lurus ke bawah
    // path.lineTo(size.width, size.height - cornerRadius);

    // // Buat lengkungan di sisi kanan
    // path.quadraticBezierTo(
    //   size.width,
    //   size.height,
    //   size.width - cornerRadius,
    //   size.height,
    // );

    // // Tarik garis ke kiri hingga kembali ke titik awal
    // path.close();

    // canvas.drawPath(path, paint);

    Path path = Path();

    double cornerRadius = 45; // Radius sudut kiri & kanan
    double centerCircleRadius = 40; // Meningkatkan puncak 10px dari sebelumnya

    // Mulai dari sisi kiri bawah
    path.moveTo(cornerRadius, size.height);

    // Buat lengkungan di sisi kiri
    path.quadraticBezierTo(0, size.height, 0, size.height - cornerRadius);

    // Tarik garis lurus ke atas sebelum lengkungan tengah
    path.lineTo(0, cornerRadius);

    // Kurva sisi kiri menuju bagian atas
    path.quadraticBezierTo(0, 0, cornerRadius, 0);

    // Garis lurus ke bagian tengah sebelum lekukan
    path.lineTo(size.width / 2 - centerCircleRadius - 55, 0);

    // *** Transisi menuju puncak gunung lebih smooth ***
    path.quadraticBezierTo(
      size.width / 2 - centerCircleRadius - 20,
      -20,
      size.width / 2 - centerCircleRadius,
      -35,
    );

    // *** Puncak lebih tinggi & curve lebih halus ***
    path.quadraticBezierTo(
      size.width / 2,
      -centerCircleRadius - 20,
      size.width / 2 + centerCircleRadius,
      -35,
    );

    path.quadraticBezierTo(
      size.width / 2 + centerCircleRadius + 20,
      -20,
      size.width / 2 + centerCircleRadius + 55,
      0,
    );

    // Lanjutkan garis ke kanan
    path.lineTo(size.width - cornerRadius, 0);

    // Kurva sisi kanan
    path.quadraticBezierTo(size.width, 0, size.width, cornerRadius);

    // Tarik garis lurus ke bawah
    path.lineTo(size.width, size.height - cornerRadius);

    // Buat lengkungan di sisi kanan
    path.quadraticBezierTo(
      size.width,
      size.height,
      size.width - cornerRadius,
      size.height,
    );

    // Tutup path
    path.close();

    // Gambar path
    canvas.drawPath(path, paint);
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return false;
  }
}
