mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2024-10-18 14:20:40 +00:00
49 lines
1.4 KiB
Dart
49 lines
1.4 KiB
Dart
|
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;
|
||
|
}
|