import 'dart:ui'; import 'package:flutter/material.dart'; class BNBCustomPainter2 extends CustomPainter { @override void paint(Canvas canvas, Size size) { debugPrint("Drawing navbar..."); Paint paint = 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); } @override bool shouldRepaint(CustomPainter oldDelegate) { return false; } }