audio_waveform_kit
Audio recording with waveform and spectrum visualization
What this package is like to depend on
Last release 1 months ago
13 Jul 2026
Too new to tell
only 2 dated releases
Nearly every release is documented
notes for 2 of 2 stable releases
Nothing withdrawn
no release was ever pulled
3 months old
2 releases · first in 2026
2 releases in the last 12 months
see the full history below
Release timeline
2 releases · May 2026 to Jul 2026Releases
latest 2-
1.0.113 Jul 2026Release notes
Open source →Fixes
AudioRecordingBloc— убран повторныйdispose()AudioRecordingService: при демонтажеAudioWaveformScopeсервис закрывался дважды (вBloc.close()и вRepositoryProvider.dispose), что могло бросать исключение на уже освобождённомAudioRecorder. Теперь жизненным циклом сервиса управляет только DI-scopeStringSnapshotPainter— исправленыNaN-координаты пути при снапшоте из одного сэмплаTimelineSpectrumPainter— исправлено деление на ноль приSpectrumConfig.frequencyBands == 1LiveSpectrumDisplay,SpectrumDisplay— чтениеspectrumConfigвbuild()переведено сcontext.read()наcontext.select()AudioWaveformPlayer— убран небезопасныйcontext.findRenderObject()!в пользу явной проверки наnullWaveformDisplay,RecordingLevelDisplay,StringSnapshotDisplay,MessengerWaveformDisplay,LiveSpectrumDisplay— сравнение списков сэмплов вbuildWhenпереведено с!=(по ссылке) наListEquality(по содержимому)AudioRecordingBloc— дефолтmaxSnapshotSamplesприведён к2048, согласован с дефолтомAudioWaveformScope
Changes
WaveformStyleперенесён изwidgets/waveform_display.dartвpainters/waveform_painter.dart— устранена обратная зависимость painter → widget; публичный API не изменился (WaveformStyleпо-прежнему доступен изaudio_waveform_kit.dart)- Добавлен
AudioRecordingState$Finished.toRecordingResult()— единая точка маппинга state вRecordingResultвместо ручной сборки вAudioRecordButton collectionдобавлен в прямые зависимости пакета (ранее использовался транзитивно)
-
1.0.021 May 2026Release notes
Open source →Features
AudioWaveformScope— DI-scope виджет; оборачивает дерево и предоставляетAudioRecordingService,SpectrumAnalyzerиAudioRecordingBlocAudioRecordButton— кнопка записи/остановки с фабричным конструкторомdefaultStyle()RecordingTimer— отображение прошедшего времени записиAudioWaveformPlayer— самодостаточный виджет воспроизведения с прогресс-баром; работает с файлом (native) и WAV-байтами (web)
Визуализация (live, во время записи)
WaveformDisplay— огибающая волновой формы; стилиWaveformStyle.envelopeиWaveformStyle.stringMessengerWaveformDisplay— RMS-волновая форма в стиле мессенджераRecordingLevelDisplay— VU-метр реального времениLiveSpectrumDisplay— живой FFT-спектр, обновляется каждые 50 мсStringSnapshotDisplay— осциллограф из сырых PCM-семплов
Визуализация (static, после записи)
SpectrumDisplay— FFT-спектр; линейный и логарифмический режимыTimelineSpectrumDisplay— тепловая карта время–частотаStaticLevelDisplay— статический VU-метрStaticMessengerWaveformDisplay— статическая RMS-волновая формаStaticStringSnapshotDisplay— статическая осциллограмма
BLoC и состояния
AudioRecordingBloc— конечный автомат записи:$Idle → $Recording → $Finished / $Error; события$Start,$Stop,$ResetAudioPlayerBloc— конечный автомат воспроизведения:$Idle / $Playing / $Paused / $Completed / $Error; события$Play,$Pause,$Stop,$Seek
Анализ и модели
SpectrumAnalyzer— чистый Dart FFT с оконной функцией Ханна, 50 % перекрытием, авто-нормализацией; методыanalyze(),computeTimeline(),analyzeRaw()SpectrumConfig— настройки FFT:fftSize,frequencyBands,frequencyMin/Max,sampleRate,dynamicRangeDb,displayTypeRecordingResult— контейнер результата:filePath,wavBytes,duration,waveformSamples,rmsSamples,snapshotSamples,spectrumData,spectrumTimeline
Утилиты
AudioUtils—encodeWav(),wavToSamples(),formatDuration()PlatformUtils—isWeb,hasMicrophonePermission()
Platform support
Platform Recording Playback Android ✓ file ✓ file iOS ✓ file ✓ file macOS ✓ file ✓ file Windows ✓ file ✓ file Linux ✓ file ✓ file Web ✓ WAV bytes ✓ WAV bytes