system_state 1.2.6 system_state: ^1.2.6 copied to clipboard
A Flutter plugin for monitoring and controlling system states like battery, Wi-Fi, volume, and mobile data on Android.
SystemState Plugin #
SystemState
is a Flutter plugin designed to provide access to essential device states and controls, currently supporting Android. The plugin allows you to monitor and control Battery, Volume, Wi-Fi, and Mobile Data states. Future updates will extend functionality and support additional platforms.
Features #
- Battery State Monitoring: Retrieve and listen to battery level, temperature, and charging status.
- Volume Control: Get the current system volume, set a new volume level, and listen to volume changes.
- Wi-Fi State Monitoring and Control::
- Check if Wi-Fi is enabled or connected.
- Retrieve the name of the connected Wi-Fi network (connectedWifiName).
- Listen to Wi-Fi state changes.
- Mobile Data State Monitoring and Control:
- Check if mobile data is enabled.
- Retrieve the SIM operator name, network operator, and network type (e.g., 4G, 5G).
- Listen to mobile data state changes.
Note: Currently,
SystemState
is Android-only. Platform checks ensure that unsupported platforms throw exceptions. Future versions will include support for iOS, Web, and more.
Installation #
To install the plugin, add the following line to your pubspec.yaml
:
dependencies:
system_state: ^1.2.6
Then, run the following command to install the package:
flutter pub get
Permissions #
To access and control various system states, the following Android permissions are required:
-
Volume Control:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
-
Wi-Fi State:
- To read Wi-Fi and network state:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- To toggle Wi-Fi state:
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
- To view connected Wi-Fi name (SSID), add the following permissions and ensure location services are enabled on the device:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
- To read Wi-Fi and network state:
-
Mobile Data State:
- To check network status and retrieve operator information:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
- To check network status and retrieve operator information:
Usage #
Import the Package #
Import the system_state
package into your Dart code:
import 'package:system_state/system_state.dart';
Mobile Data State Monitoring #
Use SystemState.mobileData
to access mobile data-related features.
Get Mobile Data State
Future<void> getMobileDataState() async {
try {
final mobileDataState = await SystemState.mobileData.getMobileDataState();
print("Mobile Data Enabled: ${mobileDataState.isMobileDataEnabled}");
print("Network Operator: ${mobileDataState.networkOperator}");
print("Network Type: ${mobileDataState.networkType}");
} catch (e) {
print("Error fetching mobile data state: $e");
}
}
Listen to Mobile Data State Changes
void listenMobileDataState() {
SystemState.mobileData.listen((mobileDataState) {
print("Mobile Data Changed - Enabled: ${mobileDataState.isMobileDataEnabled}, Operator: ${mobileDataState.networkOperator}, Network Type: ${mobileDataState.networkType}");
});
}
Battery, Volume, and Wi-Fi Features #
Refer to the respective sections in the original documentation for battery monitoring, volume control, and Wi-Fi state control.
API Reference #
MobileData.getMobileDataState()
: Retrieves the current mobile data state, including operator name and network type.MobileData.listen(void Function(MobileDataState) callback)
: Listens for changes in mobile data state.Battery
,Volume
, andWi-Fi
methods remain unchanged.
Platform Support #
Platform | Battery | Volume | Wi-Fi | Mobile Data |
---|---|---|---|---|
Android | ✅ | ✅ | ✅ | ✅ |
iOS | ❌ | ❌ | ❌ | ❌ |
Web | ❌ | ❌ | ❌ | ❌ |
Note: Platform checks ensure the plugin throws an exception if accessed on non-Android platforms. Future versions will aim to support more platforms, including iOS and Web.
Future Development #
SystemState
is actively under development. Future updates will introduce:
-
Network Controller: Features to manage:
- Airplane Mode: Check and update the status of airplane mode.
- Bluetooth: View and control Bluetooth status.
-
Cross-Platform Support: Plans to support iOS, Web, and other platforms.
Contributing #
We welcome contributions! If you have ideas or suggestions, feel free to submit issues or pull requests.
License #
This project is licensed under the MIT License.