NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3724 most downloaded on pub.dev
Draw perfect pressure-sensitive freehand lines. A set of functions for turning input points into a polygon of outline points.
Last release 8 months ago
26 Jan 2026
Ships unpredictably
gaps range from 8 days to 2.3 years
Nearly every release is documented
notes for 19 of 19 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
19 releases · first in 2021
Gave some love to the online demo.
Fixed a pub.dev analysis issue with dot shorthands.
Fix: Fixed NaN values appearing with some inputs, especially those with non-null pressure values.
One column per quarter.
Fix: Path segments (separated by sharp angles) are now properly connected, preventing unexpected thinness at elbows.
PointVector.lerp better handles the case when one point has a non-null pressure and the other has a null pressure.Before and after with sharp corners:
<img width="300" height="180" alt="v2.4.0" src="https://github.com/user-attachments/assets/46951a57-3f29-4792-97fd-3383627aa5f0" /> <img width="300" height="180" alt="v2.5.0" src="https://github.com/user-attachments/assets/110267f5-3dfd-4223-bb06-30accbaf4146" />
You can see more before/after comparison images in the Fix elbows and sharp corners, #24 pull request.
As always, you can demo the new version in the online demo.
Round stroke end caps are now full circles again (i.e. the change from 2.4.0 was reverted). This fixes sharp corners caused by small turns at the end
Round stroke end caps are now half circles instead of full circles, reducing unnecessary polygon points, thanks to @dodgog in #14.
Fixed image not loading on pub.dev README
Fixed an error in toJson() when taperEnabled is true but customTaper is null.
toJson() when taperEnabled is true but customTaper is null.Fixed an error that occured when trying to lerp a NaN point.
Added toJson() and fromJson() methods to StrokeOptions.
toJson() and fromJson() methods to StrokeOptions.Breaking change: The properties of StrokeOptions are now non-nullable. This means that e.g. StrokeOptions.smoothing now defaults to StrokeOptions.defa…
StrokeOptions are now non-nullable. This means that e.g. StrokeOptions.smoothing now defaults to StrokeOptions.defaultSmoothing instead of null. Note that you can change the defaults.Breaking change: getStroke(points, options) is now getStroke(points, options: options).
getStroke(points, options) is now getStroke(points, options: options).getStroke(points, rememberSimulatedPressure: true) to store the simulated pressure values in the points list. (#12)Fixed an edge case where we have an input of two equal points.
2.0.0 is a complete re-port of the original JavaScript library to Dart. There are some breaking changes, but the API is mostly the same and some autom…
dart fix --apply.- One more fix to README.
- Pub score optimizations. - Improve README. - Add FUNDING.
- Fix README.
- Fix README.
- Initial version
Your coding agent can read these notes before it upgrades. Set up the MCP server →