paint method
Paints the given paths
onto the canvas
.
canvas
The canvas to draw on.
size
The size of the canvas.
paths
A list of CubicPath objects representing the signature to be drawn.
Implementation
@override
void paint(Canvas canvas, Size size, List<CubicPath> paths) {
for (final path in paths) {
// Retrieve drawing parameters from path arguments, with fallbacks
final type = path.setup.args?['type'] ?? this.type.name;
final color = Color(path.setup.args?['color'] ?? this.color.toHex32());
final width = path.setup.args?['width'] ?? this.width;
final maxWidth = path.setup.args?['max_width'] ?? this.maxWidth;
HandSignatureDrawer drawer;
// Select the appropriate drawer based on the 'type' argument
switch (type) {
case 'line':
drawer = LineSignatureDrawer(color: color, width: width);
break;
case 'arc':
drawer = ArcSignatureDrawer(color: color, width: width, maxWidth: maxWidth);
break;
case 'shape':
drawer = ShapeSignatureDrawer(color: color, width: width, maxWidth: maxWidth);
break;
default:
// Default to ShapeSignatureDrawer if type is unknown or not provided
drawer = ShapeSignatureDrawer(color: color, width: width, maxWidth: maxWidth);
}
// Paint the current path using the selected drawer
drawer.paint(canvas, size, [path]);
}
}