FreekakeApp/lib/components/navbar_shape_1.dart
2025-04-09 16:28:42 +07:00

160 lines
4.4 KiB
Dart

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