From c70fd29cfc803d56a3394076a441612b3681b2a0 Mon Sep 17 00:00:00 2001 From: Vadim <44135514+vodemn@users.noreply.github.com> Date: Sun, 23 Oct 2022 23:18:19 +0300 Subject: [PATCH] implemented topbar shape --- .../components/topbar/topbar_shape.dart | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 lib/screens/metering/components/topbar/topbar_shape.dart diff --git a/lib/screens/metering/components/topbar/topbar_shape.dart b/lib/screens/metering/components/topbar/topbar_shape.dart new file mode 100644 index 0000000..2de8036 --- /dev/null +++ b/lib/screens/metering/components/topbar/topbar_shape.dart @@ -0,0 +1,48 @@ +import 'package:flutter/material.dart'; + +class TopBarShape extends CustomPainter { + final Color color; + final Size appendixSize; + final double radius; + + TopBarShape({ + required this.color, + required this.appendixSize, + required this.radius, + }); + + @override + void paint(Canvas canvas, Size size) { + final paint = Paint()..color = color; + final path = Path(); + final circularRadius = Radius.circular(radius); + path.moveTo(size.width, 0); + path.lineTo(size.width, size.height - radius); + path.arcToPoint( + Offset(size.width - radius, size.height), + radius: circularRadius, + ); + path.lineTo(size.width - appendixSize.width + radius, size.height); + path.arcToPoint( + Offset(size.width - appendixSize.width, size.height - radius), + radius: circularRadius, + ); + path.lineTo(size.width - appendixSize.width, size.height - appendixSize.height + radius); + path.arcToPoint( + Offset(size.width - appendixSize.width - radius, size.height - appendixSize.height), + radius: circularRadius, + clockwise: false, + ); + path.lineTo(radius, size.height - appendixSize.height); + path.arcToPoint( + Offset(0, size.height - appendixSize.height - radius), + radius: circularRadius, + ); + path.lineTo(0, 0); + path.close(); + canvas.drawPath(path, paint); + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) => false; +}