Both fixes paired with the ci-flutter:3.44 rebuild that adds
libsqlite3-dev to the runner image (CI-runner push #2: libsqlite3-0
→ -dev because dart:ffi opens the unversioned .so symlink that only
the dev package ships).
widgets_smoke_test (TrackRow):
TrackRow contains CachedIndicator which reaches
audioCacheManagerProvider → appDbProvider → drift_flutter's
`driftDatabase()`. That schedules a deferred-init Timer that
outlives the test widget tree and trips the
"A Timer is still pending after dispose" invariant. Override
appDbProvider in the test to use AppDb(NativeDatabase.memory())
directly — bypasses drift_flutter's Timer-using init path, still
exercises real SQLite via FFI.
like_button_test (tap toggles + rollback):
LikeButton was migrated to LucideHeart (SVG widget with `filled`
bool) in the Lucide sweep; the test's `find.byIcon(Icons.favorite)`
is stale. Replace with a small heartFilled() helper that reads
the LucideHeart's `filled` prop straight off the widget tree.
Same assertion semantics, just against the post-migration shape.
The four sync_controller failures need no code change — they're
the same root cause as the drift-tagged cohort (libsqlite3.so
missing → try/catch returns null → `result?.upserts` is null
instead of the expected 0). The image fix should clear them.
Fable #399 / local #62.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>