A Flutter plugin to control volume in Android and iOS devices programmatically. Migrate from volume package.

Streams (Works with Android OS only)

AudioManager.streamVoiceCall       -> Controll IN CALL Volume
AudioManager.streamSystem           -> Controll SYSTEM Volume
AudioManager.streamRing             -> Controll RINGER Volume
AudioManager.streamMusic            -> Controll MEDIA Volume
AudioManager.streamAlarm            -> Controll ALARM Volume
AudioManager.streamNotification     -> Controll NOTIFICATION Volume

Functions and getters

Volume Buttons will affect this volume when in app

await Volume.initAudioStream(AudioManager audioManager); // Pass any stream as parameter

Returns maximum possible volume in integers

await Volume.getMaxVol; // Return an integer on Android and double on iOS

Returns current volume level in integers

await Volume.getVol; // Return an integer on Android and double on iOS

Set volume for the stream passed to controlVolume() function

await Volume.setVol({int androidVol = 0, double iOSVol = 0.0, bool showVolumeUI = true});

Max value of i is less than or equal to Volume.getMaxVol.


class _MyAppState extends State<MyApp> {
  dynamic maxVol, currentVol; // Value will be int type on Android device and double type on iOS device

  void initState() {
    audioManager = AudioManager.streamSystem;

  Future<void> initAudioStreamType() async {
    await Volume.initAudioStream(AudioManager.streamSystem);

  void updateVolumes() async {
    // get Max Volume
    maxVol = await Volume.getMaxVol;
    // get Current Volume
    currentVol = await Volume.getVol;
    setState(() {});

  void setVol({int androidVol = 0, double iOSVol = 0.0, bool showVolumeUI = true}) async {
    await Volume.setVol(
      androidVol: androidVol,
      iOSVol: iOSVol,
      showVolumeUI: showVolumeUI,