Implementation
List<Path> extractContourPaths(
Path strokeOutlinePath, double strokeStartLength, double strokeEndLength) {
Path path1 = Path();
Path path2 = Path();
final metrics = strokeOutlinePath.computeMetrics().toList()[0];
if (strokeEndLength > strokeStartLength) {
path1 = metrics.extractPath(strokeStartLength, strokeEndLength);
path2 = metrics.extractPath(strokeEndLength, metrics.length);
path2.extendWithPath(
metrics.extractPath(0, strokeStartLength), Offset(0, 0));
} else {
path1 = metrics.extractPath(strokeStartLength, metrics.length);
path1.extendWithPath(metrics.extractPath(0, strokeEndLength), Offset(0, 0));
path2 = metrics.extractPath(strokeEndLength, strokeStartLength);
}
// path1 leads from start to end, path2 continues from end to start
return [path1, path2];
}