NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
Feature-rich and highly optimized sparklines for Flutter
Last release 1 months ago
12 Aug 2026
Release timing varies
gaps range from 9 days to 5 months
Nearly every release is documented
notes for 17 of 17 stable releases
Nothing withdrawn
no release was ever pulled
7 months old
17 releases · first in 2026
One column per month.
Added a configurable eps threshold to pie layout and data-bounds computations.
eps threshold to pie layout and data-bounds computations.if statements.Breaking: unit-aware visual lengths
Breaking: unit-aware visual lengths
ThicknessData.size, ThicknessOverride.size, marker radius, and chart/data-point border radius now use ILengthValue.Px, Vw, Vh, Dx, and Dy; viewport units follow CSS percentage semantics (Vw(1) is 1%).ILengthContext.Breaking: simplified layouts
RelativeDimension, RelativeLayout.relativeTo, and IChartLayout.transformScalar().ChartTransform no longer accepts an IChartLayout; it resolves lengths from its dimensions and path matrix.LineData
LineData.scatter(points: ...) for marker-only x/y plots without connected lines or area fills.ScatterLineData; scatter rendering is selected through lineType and can be changed with copyWith(lineType: ...).Breaking: custom line types
ILineTypeData now requires drawLine and minPoints so renderers can determine whether and when to draw connected geometry.DataPoint and DataPointPipeline
DataPoint.z as an interpolated third dimension that does not affect layout bounds.Object? point keys for selecting pipeline transformations; keys retain the source value at t <= 0 and adopt the destination value afterward during interpolation.IDataPointMeta and replaced DataPointMeta with the value-based DataPointKey, retaining its id, string key, and label fields.rescaleZ() with shared automatic bounds, optional clamping, and target-midpoint handling for equal z values.scatterZ() with optional key/predicate filtering and z-interpolated StylesInterval/ExtentsInterval metadata.groupingStep to stack(). When provided, nearby x values are grouped into rounded buckets of that size; the default remains exact x matching.sort().Visual lengths
Vmin and Vmax for percentages of the shorter and longer logical viewport dimensions.Chart insets and point fitting
ChartInsets with optional left, top, right, and bottom ILengthValues for global widget padding and local per-chart padding.ChartInsets.all(), ChartInsets.horizontal(), and ChartInsets.vertical() convenience constructors.CircleDataPointStyle.extent for a symmetric point extent matching the circle radius.ChartInsets implements IDataPointExtent and can be stored in DataPoint.data for automatic, position-aware visual overflow fitting around (x, fy).Seat maps
SeatKey with an optional database/display label and value identity based on area, row, and column.SeatSelector with OR-set label, row, column, and nullable-area filters plus OR-of-AND tag groups.SeatsBuilder actions for fluent row and column geometry with labels, horizontal and vertical gaps, skipped slots, z values, tags, areas, and point metadata.record()/repeat() blocks and reusable saveRecord() action templates for replaying seat-layout sequences during build().saveState(), saveOnlyState(), and restoreState() for deferred gap, area, tag, and data snapshots.ISeatLabelBuilder, default NullLabels, and exact-consumption ListLabels with end-of-build validation.DataPointPipeline.seats() for fixed style and optional extent decoration using selectors, predicates, and exact seat keys.Breaking: custom chart data
ChartPadding with ChartInsets without a compatibility alias.IDataPointExtent now extends IDataPointData so custom extents can be stored directly in point metadata.ISparklinesData now implements Iterable<DataPoint> and requires padding and supportsPointExtents.BetweenLineData iterates its from points followed by its to points but disables point-extent fitting.| 2.x | 3.0 |
|---|---|
ThicknessData(size: 2) |
ThicknessData(size: Px(2)) |
CircleDataPointStyle(radius: 4, ...) |
CircleDataPointStyle(radius: Px(4), ...) |
borderRadius: 4 |
borderRadius: Px(4) |
relativeTo: RelativeDimension.width with a scalar 0.1 |
Remove relativeTo; use Dx(0.1) on that visual property |
relativeTo: RelativeDimension.height with a scalar 0.1 |
Remove relativeTo; use Dy(0.1) on that visual property |
Custom IChartLayout.transformScalar() |
Remove it; custom units implement ILengthValue.resolve() |
ChartTransform(layout: layout, dimensions: d, pathTransform: m) |
ChartTransform(dimensions: d, pathTransform: m) |
- Improved pubspec.yaml - Fixed lint warnings
pubspec.yamlstack({ offset?, spacing? }) — Added offset to set the initial stacked base for each x (default 0.0).
offset to set the initial stacked base for each x (default 0.0).sort({ x?, y?, fy? }) — Sort input by x, y, and/or fy. Each flag: true = ascending, false = descending. If all null, sorts by x ascending.
true = ascending, false = descending. If all null, sorts by x ascending.dy over a window ending at each point. DataAggregation: sum, avg, min, max, median, std. window: null = cumulative from start, N = last N elements. Updates dy and fy per point.rescale — Rescale now transforms full intervals [y..fy] from source to target bounds; both y and fy are mapped, and dy is set to fy - y. Non-finite cu
[y..fy] from source to target bounds; both y and fy are mapped, and dy is set to fy - y. Non-finite currentMin/currentMax are derived from input interval bounds.Added rescale to DataPointPipeline
rescale to DataPointPipelineAdded trailingSpacing and spacingDeg to DataPointPipeline
trailingSpacing and spacingDeg to DataPointPipelineMade the radius and thickness properties in PieData uniform by default, consistent with LineData and BarData
PieData uniform by default, consistent with LineData and BarData
RelativeLayout(.., relativeTo: RelativeDimension.width) to make them relative againFixed CircleArcBuilder for angles >= 2 * pi
CircleArcBuilder for angles >= 2 * piFixed LayoutData min/max assert
LayoutData min/max assertFixed drawing DataPoints in CircleDataPointRenderer
CircleDataPointRendererAdded ChartFlip — none, vertically, horizontally, both. Flip charts around axes; available on all chart data types via ISparklinesData.flip.
none, vertically, horizontally, both. Flip charts around axes; available on all chart data types via ISparklinesData.flip.Added IDataPointBorder and DataPointBorder
IDataPointBorder and DataPointBordermigrated everything to DataPoint.data
DataPoint
IDataPointData
DataPointMetaThresholdPointsDataPoint.dataDataPointPipeline
* DataPoint * added dx * removed getYorDy * DataPointPipeline * fixes and tests * PieData * renamed space to dx * added padAngle
DataPoint
dxgetYorDyDataPointPipeline
PieData
space to dxpadAngle* Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →