import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; class UploadPainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { Paint paint = Paint() ..strokeWidth = 20.w ..color = Color(0xFFDEE1EB) ..style = PaintingStyle.stroke ..strokeCap = StrokeCap.round; Path path = Path(); Rect rect = Rect.fromCircle(center: Offset(50.w, 100.w), radius: 40.w); path.arcTo(rect, pi / 2, pi, true); Rect rect2 = Rect.fromCircle(center: Offset(100.w, 60.w), radius: 50.w); path.arcTo(rect2, pi, pi ,true); Rect rect3= Rect.fromCircle(center: Offset(150.w, 100.w), radius: 40.w); path.arcTo(rect3, 1.5 * pi, pi , true); canvas.drawPath(path, paint); Paint spaint = Paint() ..strokeWidth = 15.w ..color = Color(0xFFC3CCEA) ..style = PaintingStyle.stroke ..strokeCap = StrokeCap.round; Path spath = Path(); spath.moveTo(100.w, 110.w); spath.lineTo(75.w, 135.w); spath.moveTo(100.w, 110.w); spath.lineTo(125.w, 135.w); spath.moveTo(100.w, 110.w); spath.lineTo(100.w, 170.w); canvas.drawPath(spath, spaint); } @override bool shouldRepaint(CustomPainter oldDelegate) { return false; } @override bool shouldRebuildSemantics(CustomPainter oldDelegate) { return false; } }