A Flutter plugin to control system volume and listen for volume changes on different platforms.
true
to display system volume slider when changing volume.await FlutterVolumeController.updateShowSystemUI(true);
final volume = await FlutterVolumeController.getVolume();
await FlutterVolumeController.setVolume(0.5);
step
is set to null, it will uses the default system stepping
value.step
is undefined, the default stepping value is set to 0.15
.await FlutterVolumeController.raiseVolume(0.2);
await FlutterVolumeController.raiseVolume(null);
step
is set to null, it will uses the default system stepping
value.step
is undefined, the default stepping value is set to 0.15
.await FlutterVolumeController.lowerVolume(0.2);
await FlutterVolumeController.lowerVolume(null);
final isMuted = await FlutterVolumeController.getMute();
await FlutterVolumeController.setMute(true);
await FlutterVolumeController.setMute(false);
await FlutterVolumeController.toggleMute();
AudioStream.voiceCall
, AudioStream.system
, AudioStream.ring
, AudioStream.music
, AudioStream.alarm
.await FlutterVolumeController.setAndroidAudioStream(stream: AudioStream.system);
final stream = await FlutterVolumeController.getAndroidAudioStream();
AudioSessionCategory.ambient
, AudioSessionCategory.multiRoute
, AudioSessionCategory.playAndRecord
, AudioSessionCategory.playback
, AudioSessionCategory.record
, AudioSessionCategory.soleAmbient
await FlutterVolumeController.setIOSAudioSessionCategory(category: AudioSessionCategory.playback);
final category = await FlutterVolumeController.getIOSAudioSessionCategory();
emitOnStart
to control whether volume level should be emitted immediately right after the
listener is attached.@override
void initState() {
super.initState();
FlutterVolumeController.addListener(
(volume) {
debugPrint('Volume changed: $volume');
},
);
}
@override
void dispose() {
FlutterVolumeController.removeListener();
super.dispose();
}
MPVolumeView
internally which does not works on simulator. Please uses physical
device for testing.PlatformException
if the default
audio device doesn't support volume control, like an external monitor.FlutterActivity::onKeyDown
to customize the buttons action.