From 7d7ae3f130fa310e5b7e2401bf4ce25327ebd3c5 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Sun, 1 Dec 2024 17:06:07 +0800 Subject: [PATCH] opt: viewpoints Signed-off-by: bggRGjQaUbCoE --- lib/common/widgets/segment_progress_bar.dart | 45 +++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/lib/common/widgets/segment_progress_bar.dart b/lib/common/widgets/segment_progress_bar.dart index 9d83df62..0a6d8063 100644 --- a/lib/common/widgets/segment_progress_bar.dart +++ b/lib/common/widgets/segment_progress_bar.dart @@ -35,15 +35,6 @@ class SegmentProgressBar extends CustomPainter { final segmentWidth = (progressEnd < segmentEnd ? progressEnd : segmentEnd) - segmentStart; if (segmentWidth >= 0) { - canvas.drawRect( - Rect.fromLTWH( - segmentStart, - 0, - segmentWidth == 0 ? 2 : segmentWidth, - size.height, - ), - paint, - ); if (segmentColors[i].title != null) { TextPainter textPainter = TextPainter( text: TextSpan( @@ -53,6 +44,28 @@ class SegmentProgressBar extends CustomPainter { textDirection: TextDirection.ltr, )..layout(); + if (i == 0) { + canvas.drawRect( + Rect.fromLTRB( + 0, + size.height - textPainter.height, + size.width, + 0, + ), + Paint()..color = Colors.grey[600]!, + ); + } + + canvas.drawRect( + Rect.fromLTWH( + segmentStart, + -textPainter.height + 3, + segmentWidth == 0 ? 2 : segmentWidth, + size.height + textPainter.height - 3, + ), + paint, + ); + double? prevStart; if (i != 0) { prevStart = segmentColors[i - 1].start * size.width; @@ -60,8 +73,18 @@ class SegmentProgressBar extends CustomPainter { double textX = i == 0 ? (segmentStart - textPainter.width) / 2 : (segmentStart - prevStart! - textPainter.width) / 2 + prevStart; - double textY = size.height - textPainter.height - 1; + double textY = size.height - textPainter.height - 2; textPainter.paint(canvas, Offset(textX, textY)); + } else { + canvas.drawRect( + Rect.fromLTWH( + segmentStart, + 0, + segmentWidth == 0 ? 2 : segmentWidth, + size.height, + ), + paint, + ); } } } @@ -69,6 +92,6 @@ class SegmentProgressBar extends CustomPainter { @override bool shouldRepaint(covariant CustomPainter oldDelegate) { - return true; + return false; } }