📱 Flutter System Action Plugins

flutter_system_action is a Flutter plugin that provides a set of system actions such as adjusting volume, toggling the torch, changing brightness, and more on Android devices.

🌟 Features

  • 🔊 Adjust music volume (raise/lower)
  • 🔦 Toggle the torch (flashlight) on/off
  • 🌞 Adjust screen brightness (raise/lower/max/zero)
  • 📞 Adjust ringtone volume (raise/lower)
  • 🔔 Adjust notification volume (raise/lower)
  • 📳 Toggle vibration mode on/off
  • 📳 Toggle ring mode on
  • 🌑 Open display settings for dark mode
  • 📶 Retrieve device orientation
  • 🌐 Retrieve device locale
  • 🔋 Retrieve battery charging status
  • 📡 Retrieve network status

🚀 Getting Started

Installation

Add the following line to your pubspec.yaml file:

dependencies:
  flutter_system_action: ^1.0.4

Then, run flutter pub get to install the package.

Android Permissions

This plugin requires certain permissions to function properly. Make sure to add the following permissions to your AndroidManifest.xml file:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

Permission For Flashlight

<uses-permission android:name="android.permission.CAMERA" />

Permission For Brightness

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

Usage

Import the package in your Dart code:

import 'package:flutter_system_action/flutter_system_action.dart';

API

Methods

  • volumeButtonRaiseEvent():

    • Increases the music volume.
  • volumeButtonLowerEvent():

    • Decreases the music volume.
  • torchButtonOnEvent():

    • Turns on the torch (flashlight)
  • torchButtonOffEvent():

    • Turns off the torch (flashlight).
  • brightnessRaiseEvent():

    • Increases the screen brightness.
  • brightnessLowerEvent():

    • Decreases the screen brightness.
  • brightnessMaxEvent():

    • Sets the screen brightness to maximum.
  • brightnessZeroEvent():

    • Sets the screen brightness to zero.
  • ringtoneVolumeRaiseEvent():

    • Increases the ringtone volume.
  • ringtoneVolumeDownEvent():

    • Decreases the ringtone volume.
  • notificationVolumeRaisePress():

    • Increases the notification volume.
  • notificationVolumeDownPress():

    • Decreases the notification volume.
  • vibrationButtonPress():

    • Sets the phone to vibration mode.
  • ringModeOnButtonPress():

    • Sets the phone to ring mode.
  • darkModeEventButtonPressed():

    • Opens the display settings for dark mode.
  • getDeviceOrientation() :

    • The device orientation as an integer:

      • 1: Portrait orientation
      • 2: Landscape orientation
      • 0: Unknown orientation
    • Example usage:

Future<int> getDeviceOrientation() async {
  final int orientation = await FlutterSystemActionPlatform.instance.getDeviceOrientation();
  return orientation;
}

  • getDeviceLocale()

    • The device locale as a string (e.g., en_US).
    • Example usage:
Future<String> getDeviceLocale() async {
  final String deviceLocale = await FlutterSystemActionPlatform.instance.getDeviceLocale();
  return deviceLocale;
}

  • getNetworkStatus()

    • The network status as an integer:

      • 1: Connected to Wi-Fi
      • 2: Connected to mobile data
      • 3: Connected to Ethernet
      • 0: Connection type unknown
      • -1: No internet connection
    • Example usage:

Future<int> getNetworkStatus() async {
  final int networkStatus = await FlutterSystemActionPlatform.instance.getNetworkStatus();
  return networkStatus;
}

  • getBatteryChargingStatus()

    • The battery charging status as an integer:

      • 0: Charging
      • 1: Discharging
      • 2: Not charging
    • Example usage:

Future<int> getBatteryChargingStatus() async {
  final int chargingStatus = await FlutterSystemActionPlatform.instance.getBatteryChargingStatus();
  return chargingStatus;
}

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.