Flutter Internet Signal

A Flutter plugin for Android to retrieve mobile and Wi-Fi signal information.

Returns the received signal strength indicator (RSSI) of the current network in dBm.
The dBm value is negative — the closer to 0, the better the signal (e.g., -30 is excellent, -100 is poor).

Platform Status
Android ✅ Supported (21+)
iOS 🛠️ In development

✨ New method - getWifiSignalInfo()

  • Deprecated: getWifiSignalStrength() and getWifiLinkSpeed()
  • New: getWifiSignalInfo() method returns the class WifiSignalInfo.

WifiSignalInfo

Property Type Description
dbm int? Wi-Fi signal strength (in dBm)
mbps int? Wi-Fi link speed (in Mbps)
frequency int? Wi-Fi frequency (in MHz)
ssid String? Wi-Fi network name (SSID)
bssid String? MAC address of the access point (BSSID)
ip String? Local IP address

⚠️ About SSID and BSSID Limitations

Due to privacy restrictions introduced in recent Android versions, SSID and BSSID may not be returned correctly under certain conditions.

  • The device is running Android 8.0 (API 26) or higher without location permissions (ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION).
  • Location services must be enabled on the device (starting from Android 10+), even if the app has location permissions.
  • The device is not connected to a real Wi-Fi network, or the network is hidden

Expected behavior

In these cases, SSID may return null or "unknown ssid", and BSSID may return a placeholder like "02:00:00:00:00:00".

Android

Change the minimum Android sdk version to 21 (or higher) in your android/app/build.gradle file.

minSdkVersion 21

Add permissions in your manifest file for mobile and wifi network:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Example

import 'package:flutter_internet_signal/flutter_internet_signal.dart';

void main() async {
  final FlutterInternetSignal internetSignal = FlutterInternetSignal();
  final mobileSignal = await internetSignal.getMobileSignalStrength();
  final wifiSignal = await internetSignal.getWifiSignalInfo();
  print('Result dBm -> $mobileSignal');
  print('Result wifi info -> ${wifiSignal.toString()}');
}

For a more elaborate usage example, build and debug main.dart