Skip to content

feat: ✨ Smooth recorder waveform with frame-interpolated scroll#504

Draft
lavigarg-simform wants to merge 1 commit into
fix/I091_proportional-record-widthfrom
fix/I382_smooth-recorder-waveform
Draft

feat: ✨ Smooth recorder waveform with frame-interpolated scroll#504
lavigarg-simform wants to merge 1 commit into
fix/I091_proportional-record-widthfrom
fix/I382_smooth-recorder-waveform

Conversation

@lavigarg-simform

@lavigarg-simform lavigarg-simform commented Jun 30, 2026

Copy link
Copy Markdown

Description

The recorder waveform scrolled in hard, discrete jumps — it shifted one full bar-spacing per new audio sample with nothing drawn between frames. On fast devices (especially Impeller) this looked choppy next to other animated UI.

What changed

  • Each pushback now animates the scroll over 80 ms, easing from the current rendered position to the new target instead of snapping.
  • The painter keeps two distances: a rendered (animated) one for drawing and a logical (final) one for the overflow check. The check uses the logical target so pushback can't double-fire mid-animation.
  • Per-frame repaints during the animation now refresh only the waveform painter, not the whole widget subtree and clipper — keeps the smoothing cheap.
  • Clearing the waveform resets all animation state, so no leftover motion carries into the next recording.

RTL recording is unaffected — it advances by index and was already smooth.

No public API change. Internal rendering only.

UI Changes

Recorder waveform scroll is now frame-interpolated instead of stepping in discrete jumps.

Before

Screen.Recording.2026-06-30.at.5.38.05.PM.mov

After

Screen.Recording.2026-06-30.at.5.32.33.PM.mov

Checklist

  • The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
  • I have followed the Contributor Guide when preparing my PR.
  • I have updated/added tests for ALL new/updated/fixed functionality.
  • I have updated/added relevant documentation in docs and added dartdoc comments with ///.
  • I have updated/added relevant examples in examples or docs.

Breaking Change?

  • Yes, this PR is a breaking change.
  • No, this PR is not a breaking change.

Related Issues

Closes #382

@lavigarg-simform lavigarg-simform force-pushed the fix/I382_smooth-recorder-waveform branch 2 times, most recently from fead7c6 to 65e712d Compare June 30, 2026 10:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant