蓝色系列的网站,网站建设的功能需求分析,广东餐饮品牌设计,全球十大跨境电商平台测试版本 Flutter#xff1a;3.7.6Dart:2.19.3 network_info_plus: 4.0.1 前言
我在做设备配网的时候#xff0c;需要选择配网的WiFi。用下拉选择框展示WiFi列表。现在有个需求#xff1a;默认展示的设备为手机连接的wifi。要实现这个需求只要能够获取到手机连接的wifi信息… 测试版本 Flutter3.7.6Dart:2.19.3 network_info_plus: 4.0.1 前言
我在做设备配网的时候需要选择配网的WiFi。用下拉选择框展示WiFi列表。现在有个需求默认展示的设备为手机连接的wifi。要实现这个需求只要能够获取到手机连接的wifi信息即可。
在这里我使用的库是network_info_plus 。这个库适用于Android、iOS、MacOS、Windows。可以获取连接WiFi的名称、BSSID、IPV4、IPV6、网关、广播、子任务
在获取Wifi信息时需要获取设备的定位才能成功因此我需要使用permission_handler来进行权限申请
pub地址network_info_plus | Flutter package
github地址https://github.com/fluttercommunity/plus_plugins/tree/main/packages/network_info_plus/network_info_plus
Network_info_plus的API 函数 描述 举例 备注 getWifiSubmask()获取的设备的子网掩码 255.255.255.0 getWifiName()获取WiFi的名称 FooNetwork 经测试发现Android会有双引号ios没有双引号 getWifiIPv6()获取Wifi的IPV6 2001:0db8:85a3:0000:0000:8a2e:0370:7334 getWifiIP()获取Wifi的IPV4 192.168.1.43 getWifiGatewayIP()获取设备的网关地址 192.168.1.1 getWifiBSSID()获取WiFi的BSSID 11:22:33:44:55:66 getWifiBroadcast();获取设备的广播地址 192.168.1.255 NetworkInfo(); 初始化Network_info_plus
使用步骤
1.下载Network_info_plus包
flutter pub add network_info_plus
2.权限配置
Android权限配置
配置要求
Android 10API 级别 29SDK 或更高版本则您的应用需要具有 ACCESS_FINE_LOCATION 权限低于 Android 10API 级别 29则您的应用需要具有 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 权限设备上启用了位置服务在“设置”“位置”下如果您使用 Android 12API 级别 31及更高版本的设备请确保您的应用具有 ACCESS_NETWORK_STATE 权限 默认情况下此包不提供 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 权限
具体配置
1.进入项目根目录/android/app/src/main/AndroidManifest.xml中添加以下权限 !-- required for API 23 - 30 定位服务权限--uses-permission-sdk-23 android:nameandroid.permission.ACCESS_COARSE_LOCATION android:maxSdkVersion30 /uses-permission-sdk-23 android:nameandroid.permission.ACCESS_FINE_LOCATION android:maxSdkVersion30 /uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE / 2.在代码中获取定位权限
var status await Permission.location.status;if (!status.isGranted) {await Permission.location.request();}
3.验证是否成功
在Flutter中添加如下代码进行测试
getPhoneConnectWifiName() async { var info NetworkInfo();String? wifiName await info.getWifiName();print(-------------手机连接的wifi名称为:$wifiName);var status await Permission.location.status;if (!status.isGranted) {await Permission.location.request();}wifiName await info.getWifiName();print(-------------手机连接的wifi名称为:$wifiName);} iOS权限配置
1.下载的证书中应该包含Access Wi-Fi Information 2.打开xcode点击TARGETS下的项目——点击SigningCapablities——点击All 3.点击加号——在搜索框中搜索asscicated,然后双击Associated Domains。然后就能看到新增的内容了 3.添加location的权限。进入到项目根目录/ios/Profile文件中找到PERMISSION_LOCATION取消注释并将值改为1。没加的请看Flutter 权限申请如何对iOS进行配置 4.在Info.plist中添加NSLocationAlwaysAndWhenInUseUsageDescription和NSLocationWhenInUseUsageDescription权限。
展开Runner——展开Runner——右击Info文件——点击openAs——选择Source Code然后添加如下内容
keyNSLocationAlwaysAndWhenInUseUsageDescription/keystring获取用户当前连接的WiFi名称并展示在配网列表中/stringkeyNSLocationWhenInUseUsageDescription/keystring获取用户当前连接的WiFi名称并展示在配网列表中/string 5.在代码中获取定位权限
var status await Permission.location.status;if (!status.isGranted) {await Permission.location.request();}
6.验证是否成功
在Flutter中添加如下代码进行测试
getPhoneConnectWifiName() async { var info NetworkInfo();String? wifiName await info.getWifiName();print(-------------手机连接的wifi名称为:$wifiName);var status await Permission.location.status;if (!status.isGranted) {await Permission.location.request();}wifiName await info.getWifiName();print(-------------手机连接的wifi名称为:$wifiName);}