Search code examples
flutterwifi

Flutter how to check if WIFI is turned on (connected or not it doesn't matter)?


How do I check if the device has it's WIFI turned on in Flutter? All that I can find is how to check if a connection is present but how should i check if the WIFI itself is turned on but not if there is connection or not?


Solution

  • You can copy paste run full code below
    You can use package https://pub.dev/packages/wifi_configuration_2
    It has isWifiEnabled() and checkConnection()
    Add the following permission to AndroidManifest.xml

    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-feature android:name="android.hardware.wifi" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    

    code snippet

    void checkConnection() async {
        wifiConfiguration.isWifiEnabled().then((value) {
          print('Is wifi enabled: ${value.toString()}');
        });
    
        wifiConfiguration.checkConnection().then((value) {
          print('Value: ${value.toString()}');
        });
    

    working demo

    enter image description here

    full code

    import 'package:flutter/material.dart';
    import 'package:wifi_configuration_2/wifi_configuration_2.dart';
    
    WifiConfiguration wifiConfiguration;
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatefulWidget {
      @override
      _MyAppState createState() => _MyAppState();
    }
    
    //enum wifiStatus {
    //  conected,
    //alreadyConnected,.
    //notConnected ,
    //platformNotSupported,
    //profileAlreadyInstalled,
    //
    //}
    
    class _MyAppState extends State<MyApp> {
      String _platformVersion = 'Unknown';
    
      List<WifiNetwork> wifiNetworkList = List();
      bool isLoaded = false;
    
      @override
      void initState() {
        super.initState();
        wifiConfiguration = WifiConfiguration();
        //getConnectionState();
        checkConnection();
      }
    
      void getConnectionState() async {
        WifiConnectionStatus connectionStatus =
        await wifiConfiguration.connectToWifi(
            "DarkBe@rs", "DarkBe@rs", "com.example.wifi_configuration_example");
        print("is Connected : ${connectionStatus}");
    //
    //
        switch (connectionStatus) {
          case WifiConnectionStatus.connected:
            print("connected");
            break;
    
          case WifiConnectionStatus.alreadyConnected:
            print("alreadyConnected");
            break;
    
          case WifiConnectionStatus.notConnected:
            print("notConnected");
            break;
    
          case WifiConnectionStatus.platformNotSupported:
            print("platformNotSupported");
            break;
    
          case WifiConnectionStatus.profileAlreadyInstalled:
            print("profileAlreadyInstalled");
            break;
    
          case WifiConnectionStatus.locationNotAllowed:
            print("locationNotAllowed");
            break;
        }
    //
    //    bool isConnected = await WifiConfiguration.isConnectedToWifi("DBWSN5");
        // String connectionState = await WifiConfiguration.connectedToWifi();
        //   print("coneection status ${connectionState}");
      }
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: const Text('Plugin example app'),
            ),
            body: wifiNetworkList.isEmpty && isLoaded
                ? Center(
              child: FlatButton(
                color: Colors.red,
                child: Text("connect"),
                onPressed: () async {
                  WifiConnectionObject connectionStatus =
                  await wifiConfiguration.connectedToWifi();
                  print("Ip address : ${connectionStatus.ip}");
                  wifiConfiguration.getConnectionType().then((value) {
                    print('Connection type: ${value.toString()}');
                  });
                  wifiConfiguration.isConnectionFast().then((value) {
                    print('Is connection fast: ${value.toString()}');
                  });
                },
              ),
            )
                : Column(
              children: <Widget>[
                FlatButton(
                    onPressed: () {
                      WifiConfiguration wifiConfiguration = WifiConfiguration();
                      wifiConfiguration.enableWifi();
                    },
                    child: Text('Wifi enable')),
                FlatButton(
                    onPressed: () {
                      WifiConfiguration wifiConfiguration = WifiConfiguration();
                      wifiConfiguration.disableWifi();
                    },
                    child: Text('Wifi disable')),
                FlatButton(
                    onPressed: () {
                      wifiConfiguration.getConnectionType().then((value) {
                        print('Connection type: ${value.toString()}');
                      });
    
                      wifiConfiguration.isConnectionFast().then((value) {
                        print('Connection type: ${value.toString()}');
                      });
                    },
                    child: Text('Print information')),
                Divider(),
                Expanded(
                  child: ListView.builder(
                    itemBuilder: (context, index) {
                      WifiNetwork wifiNetwork = wifiNetworkList[index];
                      return ListTile(
                        leading: Text(wifiNetwork.signalLevel),
                        title: Text(wifiNetwork.ssid),
                        subtitle: Text(wifiNetwork.bssid),
                      );
                    },
                    itemCount: wifiNetworkList.length,
                  ),
                ),
              ],
            ),
          ),
        );
      }
    
      void checkConnection() async {
        wifiConfiguration.isWifiEnabled().then((value) {
          print('Is wifi enabled: ${value.toString()}');
        });
    
        wifiConfiguration.checkConnection().then((value) {
          print('Value: ${value.toString()}');
        });
    
        WifiConnectionObject wifiConnectionObject =
        await wifiConfiguration.connectedToWifi();
        if (wifiConnectionObject != null) {
          getWifiList();
        }
      }
    
      Future<void> getWifiList() async {
        wifiNetworkList = await wifiConfiguration.getWifiList();
        print('Network list lenght: ${wifiNetworkList.length.toString()}');
        setState(() {});
      }
    }