cargo66/lib/presentation/widgets/dashed_line.dart

71 lines
1.5 KiB
Dart
Raw Normal View History

2024-07-29 12:30:30 +00:00
import 'package:flutter/material.dart';
class DashedLine extends StatelessWidget {
final double height;
final double width;
final Color color;
final double strokeWidth;
final double dashWidth;
final double dashSpace;
const DashedLine({
super.key,
this.height = 1,
this.width = double.infinity,
this.color = Colors.black,
this.strokeWidth = 1,
this.dashWidth = 5,
this.dashSpace = 3,
});
@override
Widget build(BuildContext context) {
return SizedBox(
width: width,
height: height,
child: CustomPaint(
painter: _DashedLinePainter(
color: color,
strokeWidth: strokeWidth,
dashWidth: dashWidth,
dashSpace: dashSpace,
),
),
);
}
}
class _DashedLinePainter extends CustomPainter {
final Color color;
final double strokeWidth;
final double dashWidth;
final double dashSpace;
_DashedLinePainter({
required this.color,
required this.strokeWidth,
required this.dashWidth,
required this.dashSpace,
});
@override
void paint(Canvas canvas, Size size) {
double startX = 0;
final paint = Paint()
..color = color
..strokeWidth = strokeWidth;
while (startX < size.width) {
canvas.drawLine(
Offset(startX, size.height / 2),
Offset(startX + dashWidth, size.height / 2),
paint,
);
startX += dashWidth + dashSpace;
}
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => false;
}