Summary
- Fixes performance degradation for long-duration, high-amplitude wave configurations reported in #53.
- Reduces per-frame path work by sampling wave curves instead of adding one point per pixel.
- Reuses painter path and gradient shader state, and isolates WaveWidget repaint work.
- Avoids recreating animation controllers when runtime-only paint parameters such as amplitude change.
Benchmark
Issue #53 reproduction config, Flutter 3.7.12 via FVM, 1440x300 WaveWidget, 4 gradient layers, 1800 pumped frames:
| Revision | Average pump time |
|---|---|
| 0.2.4 baseline | 0.258 ms/frame |
| 0.2.5 | 0.128 ms/frame |
About 50% lower frame pump time, roughly 2.0x faster in this benchmark.