FreekakeApp/lib/components/navbar_shape_2.dart
2025-05-07 13:56:17 +07:00

94 lines
2.6 KiB
Dart

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