123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import 'package:flutter/material.dart';
- class SignatureDrawBoard extends StatefulWidget {
- @override
- _SignatureDrawBoardState createState() => _SignatureDrawBoardState();
- }
- class _SignatureDrawBoardState extends State<SignatureDrawBoard> {
- List<Offset> points = [];
- @override
- Widget build(BuildContext context) {
- return GestureDetector(
- onPanUpdate: (DragUpdateDetails details) {
- setState(() {
- RenderBox renderBox = context.findRenderObject() as RenderBox;
- Offset localPosition = renderBox.globalToLocal(details.globalPosition);
- points = List.from(points)..add(localPosition);
- });
- },
- onPanEnd: (DragEndDetails details) {
- // points.add(Offset.zero);
- },
- child: CustomPaint(
- painter: SignaturePainter(
- color: Colors.black,
- strokeWidth: 5.0,
- points: points,
- ),
- size: Size.infinite,
- ),
- );
- }
- }
- class SignaturePainter extends CustomPainter {
- Color color;
- double strokeWidth;
- List<Offset> points;
- SignaturePainter({required this.color, required this.strokeWidth, required this.points});
- @override
- void paint(Canvas canvas, Size size) {
- Paint paint = Paint()
- ..color = color
- ..strokeWidth = strokeWidth
- ..strokeCap = StrokeCap.round;
- for (int i = 0; i < points.length - 1; i++) {
- canvas.drawLine(points[i], points[i + 1], paint);
- }
- }
- @override
- bool shouldRepaint(CustomPainter oldDelegate) {
- return true;
- }
- }
|