path method
Implementation
@override
Path path(bool close) {
if (close && _closePath != null) {
return _closePath!;
}
if (!close && _openPath != null) {
return _openPath!;
}
Path path = Path();
if (smoothRatio != null) {
double smoothness = smoothRatio ?? 0.25;
Offset firstPoint = _pointList.first;
path.moveTo(firstPoint.dx, firstPoint.dy);
List<Offset> controlList = _computeControlPoint(_pointList, smoothness: smoothness);
for (int i = 0; i < (_pointList.length - 1) * 2; i += 2) {
Offset leftControlPoint = controlList[i];
Offset rightControlPoint = controlList[i + 1];
Offset rightPoint = _pointList[i ~/ 2 + 1];
path.cubicTo(leftControlPoint.dx, leftControlPoint.dy, rightControlPoint.dx, rightControlPoint.dy, rightPoint.dx, rightPoint.dy);
}
} else {
Offset first = _pointList.first;
path.moveTo(first.dx, first.dy);
for (int i = 1; i < _pointList.length; i++) {
Offset p = _pointList[i];
path.lineTo(p.dx.toDouble(), p.dy.toDouble());
}
}
if (close) {
path.close();
}
if (_dashList.isNotEmpty) {
path = dashPath(path, _dashList);
}
if (close) {
_closePath = path;
} else {
_openPath = path;
}
return path;
}