mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-10-21 15:02:21 +02:00
The card ran ffprobe, both FFmpeg sessions, SAF temp copies, the native spectral-cutoff job and its cancellation inside State. Move that pipeline verbatim into AudioAnalysisRunner in lib/services/audio_analysis_runner.dart together with the private per-run records from the widget's models part, which is now empty and removed. The card keeps request ids and every setState. The runner takes a `bool Function() isCancelled` that the card builds from the same `!mounted || requestId != _spectrogramRequestId` test, polled at the same points that used to call _checkAnalysisRequest. cancel() and dispose() run the jobs invalidate/dispose, network cancel and native job cancel in the original order. Subprocess order, temp file names and cleanup, SAF copy and the native data job payload are unchanged.