更新睡眠报告
This commit is contained in:
48
lib/pages/sleep_report/chart/GradientLine.dart
Normal file
48
lib/pages/sleep_report/chart/GradientLine.dart
Normal file
@@ -0,0 +1,48 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class GradientLine extends StatelessWidget {
|
||||
final double height;
|
||||
final Color color;
|
||||
|
||||
const GradientLine({
|
||||
Key? key,
|
||||
this.height = 4.0,
|
||||
required this.color,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
return CustomPaint(
|
||||
size: Size(constraints.maxWidth, height),
|
||||
painter: _GradientLinePainter(color: color),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _GradientLinePainter extends CustomPainter {
|
||||
final Color color;
|
||||
|
||||
_GradientLinePainter({required this.color});
|
||||
|
||||
@override
|
||||
void paint(Canvas canvas, Size size) {
|
||||
final Paint paint = Paint()
|
||||
..shader = LinearGradient(
|
||||
colors: [
|
||||
color.withOpacity(0.0), // 左端透明
|
||||
color.withOpacity(1.0), // 中间最深
|
||||
color.withOpacity(0.0), // 右端透明
|
||||
],
|
||||
stops: [0.0, 0.5, 1.0],
|
||||
).createShader(Rect.fromLTWH(0, 0, size.width, size.height));
|
||||
|
||||
canvas.drawRect(Rect.fromLTWH(0, 0, size.width, size.height), paint);
|
||||
}
|
||||
|
||||
@override
|
||||
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
|
||||
}
|
||||
Reference in New Issue
Block a user