Skip to content

Jaemin-VIRNECT/volume_controller

This branch is 36 commits behind kurenai7968/volume_controller:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

717720b · May 25, 2023

History

34 Commits
May 13, 2023
May 25, 2023
Dec 17, 2022
Jun 1, 2021
May 25, 2023
Feb 5, 2021
Jan 30, 2021
May 25, 2023
Jan 30, 2021
Dec 17, 2022
May 25, 2023
May 25, 2023
Jan 30, 2021

Repository files navigation

volume_controller

A Flutter plugin for iOS and Android control system volume.

Variables

  • bool showSystemUI: show or hide volume system UI
    The default value is true.

    VolumeController().showSystemUI = true

Functions

  • getVolume: get current volume from system

    VolumeController().getVolume()

  • setVolume: input a double number to set system volume. The range is [0, 1]

    await VolumeController().setVolume(double volume, {bool? showSystemUI})

  • maxVolume: set the volume to max

    VolumeController().maxVolume({bool? showSystemUI})

  • muteVolume: mute the volume

    VolumeController().muteVolume({bool? showSystemUI})

  • listener: listen system volume

    VolumeController().listener((volume) { // TODO });

  • removeListener: cancel listen system volume

    VolumeController().removeListener()

Usage

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  double _volumeListenerValue = 0;
  double _getVolume = 0;
  double _setVolumeValue = 0;

  @override
  void initState() {
    super.initState();
    // Listen to system volume change
    VolumeController().listener((volume) {
      setState(() => _volumeListenerValue = volume);
    });

    VolumeController().getVolume().then((volume) => _setVolumeValue = volume);
  }

  @override
  void dispose() {
    VolumeController().removeListener();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Volume Plugin example app'),
        ),
        body: Column(
          children: [
            Text('Current volume: $_volumeListenerValue'),
            Row(
              children: [
                Text('Set Volume:'),
                Flexible(
                  child: Slider(
                    min: 0,
                    max: 1,
                    onChanged: (double value) {
                      _setVolumeValue = value;
                      VolumeController().setVolume(_setVolumeValue);
                      setState(() {});
                    },
                    value: _setVolumeValue,
                  ),
                ),
              ],
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text('Volume is: $_getVolume'),
                TextButton(
                  onPressed: () async {
                    _getVolume = await VolumeController().getVolume();
                    setState(() {});
                  },
                  child: Text('Get Volume'),
                ),
              ],
            ),
            TextButton(
              onPressed: () => VolumeController().muteVolume(),
              child: Text('Mute Volume'),
            ),
            TextButton(
              onPressed: () => VolumeController().maxVolume(),
              child: Text('Max Volume'),
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text('Show system UI:${VolumeController().showSystemUI}'),
                TextButton(
                  onPressed: () => setState(() => VolumeController().showSystemUI = !VolumeController().showSystemUI),
                  child: Text('Show/Hide UI'),
                )
              ],
            ),
          ],
        ),
      ),
    );
  }
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 28.9%
  • Dart 27.8%
  • Swift 27.7%
  • Ruby 11.7%
  • Objective-C 3.9%