📗
sounds
  • Introduction
  • Installing
  • Roadmap
  • API
    • Overview
    • AudioSource
    • Albums
    • Downloader
    • iOSCategory
    • MediaFormat
    • Monitoring
    • Quickplay
    • RecorderPlaybackController
    • SoundPlayer
    • SoundPlayerUI
    • SoundRecorder
    • SoundRecorderUI
    • Track
  • Platforms
    • Overview
    • Android
    • iOS
  • Contributing
    • Overview
    • Building
    • Debugging
    • Logging
  • ETC
    • Migrating from Flutter Sound
Powered by GitBook
On this page

Was this helpful?

  1. API

Monitoring

Overview

If you are building your own widget you might want to display a progress bar that displays the current recording or playback position.

The easiest way to do this is via the SoundPlayerUI/SoundRecordingUI widgets but if you want to write your own then you will want to use the dispositionStream with a StreamBuilder.

To use a dispositionStream you need to create an SoundPlayer or SoundRecorder instance.

class MyWidgetState
{
	/// use .noUI() as you are going to build your own UI.
	var player = SoundPlayer().noUI();

	void initState()
	{
		super.initState();

	}

	void dispose()
	{
		player.release();
		super.dispose();
	}

	 Widget build() {
    	 return Row(children:
		 	[Button('Play' onTap: onPlay)
		 		, StreamBuilder<PlaybackDisposition>(
					stream: player.dispositionStream,
					initialData: PlaybackDisposition.zero(),
					builder: (context, snapshot) {
					var disposition = snapshot.data;
					return Slider(
						max: disposition.duration.inMilliseconds.toDouble(),
						value: disposition.position.inMilliseconds.toDouble(),
						onChanged: (value) =>
							player._seek(Duration(milliseconds: value.toInt())),
					);
            		}
				))
			]);
      },
    ));

  /// you would wire this to a button
  void onPlay()
  {
	  player.play(Track.fromFile('sample.aac'));
  }

   /// you would wire this to a pause button
  void onPause()
  {
	  player.pause();
  }

   /// you would wire this to a button
  void onResume()
  {
	  player.resume();
  }
}
PreviousMediaFormatNextQuickplay

Last updated 4 years ago

Was this helpful?