hitTestStroke function
Returns true if point hits the polyline points with thickness.
Implementation
bool hitTestStroke(
Offset point,
List<Offset> points,
double thickness, {
double hitPadding = 0,
double hitSlop = kHitSlop,
}) {
final baseThickness = clampNonNegativeFinite(thickness);
final baseHitPadding = clampNonNegativeFinite(hitPadding);
final baseHitSlop = clampNonNegativeFinite(hitSlop, fallback: kHitSlop);
if (points.isEmpty) return false;
if (points.length == 1) {
final radius = baseThickness / 2 + baseHitPadding + baseHitSlop;
return (point - points.first).distance <= radius;
}
final effectiveThickness = baseThickness + 2 * (baseHitPadding + baseHitSlop);
for (var i = 0; i < points.length - 1; i++) {
if (hitTestLine(point, points[i], points[i + 1], effectiveThickness)) {
return true;
}
}
return false;
}