|
42 | 42 | `SeasonalityChart.radius`. |
43 | 43 | - Cards, labels and chrome: `SeriesTooltip.borderRadius`, |
44 | 44 | `ChartStyle.labelCornerRadius`, `DrawingStyle.labelCornerRadius`, |
45 | | - `DrawingStyle.toolbarBorderRadius` and `DrawingStyle.popoverBorderRadius`. |
| 45 | + `DrawingStyle.toolbarBorderRadius`, `DrawingStyle.popoverBorderRadius`, |
| 46 | + `DepthChartStyle.radius` and `HeatmapLegend.radius`. |
46 | 47 |
|
47 | 48 | Each default draws the shape it drew before, so only code that passed a |
48 | 49 | radius needs changing. Radii that describe a circle — dots, pie and gauge |
49 | 50 | arcs, drawing handles, event marks, the rounded ends of the depth ratio bar |
50 | 51 | — stay `double`. |
51 | 52 |
|
| 53 | +- **The charts no longer leak their laid-out text.** A `TextPainter` holds a |
| 54 | + native paragraph and has to be disposed, and none of them were: |
| 55 | + - `TextPainterCache` disposes the painter it evicts, the ones `clear()` |
| 56 | + drops, and everything it still holds when the new `dispose()` is called. |
| 57 | + All 39 charts that own a cache now dispose it when their state goes. |
| 58 | + - The depth chart laid out every label afresh on every paint and threw the |
| 59 | + painters away; it goes through a cache like every other chart. |
| 60 | + - The legend rows, axis labels, marker labels and event glyphs that cannot be |
| 61 | + cached — a multi-span legend, an icon in its own font — are disposed as |
| 62 | + soon as they are painted. |
| 63 | + - `KChartWidget` disposes the `CurvedAnimation` wrapping each scroll |
| 64 | + animation instead of leaving one behind per fling. |
| 65 | + |
| 66 | + Across the test suite this was over eight thousand undisposed painters. The |
| 67 | + suite now runs under `leak_tracker` (`test/flutter_test_config.dart`), so a |
| 68 | + widget that leaves a disposable behind fails its file. |
| 69 | + |
52 | 70 | ## 2.6.0 - 2026-09-16 |
53 | 71 |
|
54 | 72 | ### Added |
|
0 commit comments