This commit is contained in:
toly
2023-12-12 09:40:24 +08:00
parent 25e51d789f
commit ab2778a22b
51 changed files with 3453 additions and 129 deletions

View File

@@ -0,0 +1,93 @@
import 'package:flutter/material.dart';
class TolyTitle extends StatelessWidget {
final Widget child;
final Color? lineColor;
final Color? color;
const TolyTitle({
super.key,
required this.child,
this.lineColor,
this.color,
});
@override
Widget build(BuildContext context) {
return Container(
decoration: TitleDecoration(
color,lineColor,
),
child: child,
);
}
}
class TitleDecoration extends Decoration {
final Color? lineColor;
final Color? color;
const TitleDecoration( this.color,this.lineColor,);
@override
BoxPainter createBoxPainter([VoidCallback? onChanged]) =>
TitlePainter(color: color, lineColor: lineColor);
}
class TitlePainter extends BoxPainter {
final Color? color;
final Color? lineColor;
const TitlePainter({this.color, this.lineColor});
@override
void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) {
canvas.save();
canvas.translate(offset.dx, offset.dy);
Size size = configuration.size ?? Size.zero;
final Paint paint = Paint()
// ..style = PaintingStyle.stroke
..color = color??Colors.transparent
..strokeWidth = 1;
final Rect zone = Rect.fromCenter(
center: Offset(size.width / 2, size.height / 2),
width: size.width,
height: size.height,
);
canvas.drawRect(zone, paint);
final Paint paint2 = Paint()
..strokeWidth = 1
// ..style = PaintingStyle.stroke
// ..color = const Color(0xffFFFAA7);
..color = lineColor??Colors.transparent;
const double start = 4;
canvas.drawLine(const Offset(0, start), Offset(size.width, start), paint2);
double end = size.height - 4;
canvas.drawLine(Offset(0, end), Offset(size.width, end), paint2);
canvas.drawCircle(Offset(10,size.height/2), 4, paint2);
//
// canvas.translate(
// offset.dx + (configuration.size?.width??0) / 2,
// offset.dy + (configuration.size?.height??0) / 2,
// );
//
// final Rect zone = Rect.fromCenter(
// center: Offset.zero,
// width: configuration.size.width,
// height: configuration.size.height,
// );
//
// path.addRRect(RRect.fromRectAndRadius(
// zone,
// Radius.circular(20),
// ));
//
// const DashPainter(span: 4, step: 9).paint(canvas, path, paint);
canvas.restore();
}
}