flutter 获取wifi名称以及Android10获取不到wifi名称<unknown ssid>

插件

我使用的是wifi_iot这个插件,版本是0.2.2,flutter版本是1.20.0。

dependencies:
  flutter:
    sdk: flutter
    
  wifi_iot: ^0.2.2

获取wifi名称

插件地址:https://pub.flutter-io.cn/packages/wifi_iot
main.dart 代码

import 'package:flutter/material.dart';
import 'package:wifi_iot/wifi_iot.dart';

void main() => runApp(FlutterWifiIoT());

class FlutterWifiIoT extends StatefulWidget {
  const FlutterWifiIoT({Key key}) : super(key: key);

  @override
  _FlutterWifiIoTState createState() => _FlutterWifiIoTState();
}

class _FlutterWifiIoTState extends State {
  String wifiName = '--';

  @override
  void initState() {
    super.initState();
    getWifiName();
  }

  getWifiName() async {
    String wifissid = await WiFiForIoTPlugin.getSSID();
    print('wifissid:' + wifissid);
    this.setState(() {
      wifiName = wifissid;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('demo'),
          elevation: 20.0,
          centerTitle: true,
        ),
        body: Container(
          child: Column(
            children: [
              Text(wifiName),
              FlatButton(
                onPressed: getWifiName,
                child: Text('获取'),
              )
            ],
          ),
        ),
      ),
    );
  }
}

获取不到wifi名称

我遇到的情况是该插件在安卓7.0的设备上可以获取wifi名称,但是在安卓10上获取不到wifi名称。

主要是安卓10获取WiFi名称需要定位权限。

1,在项目目录:android\app\src\main\AndroidManifest.xml里添加以下权限。添加完成并不代表已授权,需要提示用户进行授。


    
    
    
    
    
    
    
    
    
    
    

2,添加完成后还需要提示获取定位权限,用户授权后才能获取到WiFi名称,所以需要让用户授权。这里我是用的是permission_handler: ^3.0.1插件。

import 'package:flutter/material.dart';
import 'package:wifi_iot/wifi_iot.dart';
import 'package:permission_handler/permission_handler.dart';

void main() => runApp(FlutterWifiIoT());

class FlutterWifiIoT extends StatefulWidget {
  const FlutterWifiIoT({Key key}) : super(key: key);

  @override
  _FlutterWifiIoTState createState() => _FlutterWifiIoTState();
}

class _FlutterWifiIoTState extends State {
  String wifiName = '--';

  @override
  void initState() {
    super.initState();
    // 权限
    var permission =
        PermissionHandler().checkPermissionStatus(PermissionGroup.location);
    print("permission status is " + permission.toString());
    // 请求授权,location是定位权限。
    PermissionHandler()
        .requestPermissions([PermissionGroup.location]);

    getWifiName();
  }

  getWifiName() async {
    String wifissid = await WiFiForIoTPlugin.getSSID();
    print('wifissid:' + wifissid);
    this.setState(() {
      wifiName = wifissid;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('demo'),
          elevation: 20.0,
          centerTitle: true,
        ),
        body: Container(
          child: Column(
            children: [
              Text(wifiName),
              FlatButton(
                onPressed: getWifiName,
                child: Text('获取'),
              )
            ],
          ),
        ),
      ),
    );
  }
}


你可能感兴趣的:(flutter,flutter,android,android,studio)