我正在尝试从用户那里收集签名并保存为图像。我已经做到能够在屏幕上绘制,但现在我想点击一个按钮将其保存为图像并存储在我的数据库中。
以下是我目前所拥有的内容:
以下是我目前所拥有的内容:
import 'package:flutter/material.dart';
class SignaturePadPage extends StatefulWidget {
SignaturePadPage({Key key}) : super(key: key);
@override
_SignaturePadPage createState() => new _SignaturePadPage();
}
class _SignaturePadPage extends State<SignaturePadPage> {
List<Offset> _points = <Offset>[];
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: GestureDetector(
onPanUpdate: (DragUpdateDetails details) {
setState(() {
RenderBox referenceBox = context.findRenderObject();
Offset localPosition =
referenceBox.globalToLocal(details.globalPosition);
_points = new List.from(_points)..add(localPosition);
});
},
onPanEnd: (DragEndDetails details) => _points.add(null),
child: new CustomPaint(painter: new SignaturePainter(_points)),
),
);
}
}
class SignaturePainter extends CustomPainter {
SignaturePainter(this.points);
final List<Offset> points;
void paint(Canvas canvas, Size size) {
Paint paint = new Paint()
..color = Colors.black
..strokeCap = StrokeCap.round
..strokeWidth = 5.0;
for (int i = 0; i < points.length - 1; i++) {
if (points[i] != null && points[i + 1] != null)
canvas.drawLine(points[i], points[i + 1], paint);
}
}
bool shouldRepaint(SignaturePainter other) => other.points != points;
}
不确定接下来该怎么做...
paint(Canvas canvas, Size size)
,因此没有 Canvas 构造函数。在这种情况下,我该怎么做才能将它整合进来? - Jus10Canvas
添加到您的布局中,或者让绘画更新记录的Canvas
和传入的Canvas
(同时绘制或使用drawPicture
从一个复制到另一个)。 - jspcalfilterQuality
设置为FilterQuality.high
,但我得到的图像仍然是像素化和模糊的,即使我绘制的圆形与CustomPaint画布相比也非常像素化。 - Arslan Kaleem