簡體   English   中英

Flutter 如何查看WIFI是否開啟(連接與否無所謂)?

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

Flutter如何查看設備是否開啟了WIFI? 我能找到的只是如何檢查是否存在連接,但我應該如何檢查 WIFI 本身是否已打開,而不是是否有連接?

您可以在下面復制粘貼運行完整代碼
您可以使用 package https://pub.dev/packages/wifi_configuration_2
它有isWifiEnabled()checkConnection()
將以下權限添加到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" />

代碼片段

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

    wifiConfiguration.checkConnection().then((value) {
      print('Value: ${value.toString()}');
    });

工作演示

在此處輸入圖像描述

完整代碼

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(() {});
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM