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; } }