Flutter 获取手机连接的Wifi信息
- 测试版本
- Flutter:3.7.6
- Dart: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() | 获取的设备的子网掩码 |
| |
| getWifiName() | 获取WiFi的名称 |
| 经测试发现Android会有双引号,ios没有双引号 |
getWifiIPv6() | 获取Wifi的IPV6 |
| |
getWifiIP() | 获取Wifi的IPV4 |
| |
getWifiGatewayIP() | 获取设备的网关地址 |
| |
| getWifiBSSID() | 获取WiFi的BSSID |
| |
getWifiBroadcast(); | 获取设备的广播地址 |
| |
| NetworkInfo(); | 初始化Network_info_plus |
使用步骤
1.下载Network_info_plus包
flutter pub add network_info_plus
2.权限配置
Android权限配置
配置要求
- Android 10(API 级别 29)SDK 或更高版本,则您的应用需要具有 ACCESS_FINE_LOCATION 权限
- 低于 Android 10(API 级别 29),则您的应用需要具有 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 权限
- 设备上启用了位置服务(在“设置”>“位置”下)
- 如果您使用 Android 12(API 级别 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:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="30" /><uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" /><uses-permission android:name="android.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下的项目——>点击Signing&Capablities——>点击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,然后添加如下内容
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key><string>获取用户当前连接的WiFi名称并展示在配网列表中</string><key>NSLocationWhenInUseUsageDescription</key><string>获取用户当前连接的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");}

相关文章:
Flutter 获取手机连接的Wifi信息
测试版本 Flutter:3.7.6Dart:2.19.3 network_info_plus: 4.0.1 前言 我在做设备配网的时候,需要选择配网的WiFi。用下拉选择框展示WiFi列表。现在有个需求:默认展示的设备为手机连接的wifi。要实现这个需求只要能够获取到手机连接的wifi信息…...
誉龙视音频 Third/TimeSyn 远程命令执行复现
0x01 漏洞描述: 誉龙公司定位为系统级的移动视音频记录解决方案提供商,凭借其深厚的行业经验,坚持自主研发,匠心打造记录仪领域行业生态,提供开放式的记录仪APK、GB28181 SDK、国网B协议、管理平台软件OEM。誉龙视音频…...
ATMEGA328P芯片引脚介绍
1.AVCC AVCC是ATmega328P芯片的模拟电源引脚。 AVCC引脚的定义 模拟电源引脚:AVCC(Analog Voltage Common)是ATmega328P微控制器中的模拟电源引脚,用于为模拟电路部分提供稳定的电源。功能描述:AVCC通常连接到一个干…...
现代前端构建工具对比:Vue CLI、Webpack 和 Vite
一、引言🌟 在现代前端开发中,选择合适的构建工具对于提高项目的效率和可维护性至关重要。🛠️ Vue CLI、📦 Webpack 和 🚀 Vite 是目前最流行的三个构建工具,它们各自具有独特的优势和适用场景。本文将深…...
代码随想录算法训练营第三九天| 198.打家劫舍 213.打家劫舍II 337.打家劫舍 III
今日任务 198.打家劫舍 213.打家劫舍II 337.打家劫舍 III 198.打家劫舍 题目链接: . - 力扣(LeetCode) class Solution {public int rob(int[] nums) {int[] dp new int[nums.length];if (nums.length 1) return nums[0];if (nums.lengt…...
阿里云AI基础设施全面升级,模型算力利用率提升超20%
来源首席数智官 9月20日,2024云栖大会现场,阿里云全面展示了全新升级后的AI Infra系列产品及能力。通过全栈优化,阿里云打造出一套稳定和高效的AI基础设施,连续训练有效时长大于99%,模型算力利用率提升20%以上。 “AI…...
Debezium日常分享系列之:将容器镜像移至 quay.io
Debezium日常分享系列之:将容器镜像移至 quay.io 在Debezium 3.0.0.Final发布之后,我们将不再向docker.io发布容器镜像更新。旧版本的Debezium 2.x和1.x镜像将继续保留在docker.io上;然而,所有未来的Debezium 2.7.x和3.x或更高版本…...
基于TCP实现聊天
TCP客户端代码 import java.io.*; import java.net.InetAddress; import java.net.Socket;public class TcpClientDemo01 {public static void main(String[] args) {Socket socket null;OutputStream os null;InputStream is null;BufferedReader reader null;try {// 1.…...
基于JavaSwing实现的酒店管理系统
一、项目介绍 > 欢迎使用酒店管理系统! > 这是一个基于Java Swing开发,用于管理酒店预订、房间、订单和用户信息的系统。 > 适用于JAVA初学者作为入门学习项目。 二、项目演示 三、基础依赖 技术/框架版本描述Java8编程语言MySQL8.0数据…...
网络基础,协议,OSI分层,TCP/IP模型
网络的产生是数据交流的必然趋势,计算机之间的独立的个体,想要进行数据交互,一开始是使用磁盘进行数据拷贝,可是这样的数据拷贝效率很低,于是网络交互便出现了; 1.网络是什么 网络,顾名思义是…...
CefSharp_Vue交互(Element UI)_WinFormWeb应用---设置应用透明度(含示例代码)
一、界面预览 1.1 设置透明(整个页面透明80%示例) 限制输入值:10-100(数字太小会不好看见) 1.2 vue标题栏 //注册类与js调用 (async function(...
【OSS安全最佳实践】降低因账号密码泄露带来的未授权访问风险
如果因个人或者企业账号密码泄露引发了未经授权的访问,可能会出现非法用户对OSS资源进行违法操作,或者合法用户以未授权的方式对OSS资源进行各类操作,这将给数据安全带来极大的威胁。为此,OSS提供了在实施数据安全保护时需要考虑的…...
视频存储EasyCVR视频监控汇聚管理平台设备录像下载报错404是什么原因?
EasyCVR视频监控汇聚管理平台是一款针对大中型项目设计的跨区域网络化视频监控集中管理平台。该平台不仅具备视频资源管理、设备管理、用户管理、运维管理和安全管理等功能,还支持多种主流标准协议,如GB28181、RTSP/Onvif、RTMP、部标JT808、GA/T 1400协…...
在Spring项目中,两个实用的工具(生成类与映射文件、API自动生成)
尊贵的Spring玩家,是不允许动脑思考的,所以我们要学会复制粘贴 1.生成类与映射文件 背景:在项目编写初期,我们已经设计好了表,后面就需要根据表来撰写实体类(model)和对应的sql语句(dao和mapper)。如果一个项目中&…...
C#基础(16)实践:学生成绩管理系统
简介 通过基础部分的学习,我们已经能进行一些实际应用的开发,学生成绩系统我相信是大家基本在大学期间上程序课必定会经历的一个小项目。 这个小项目看上去简单,但是思考量却不少。 这里就不带着大家一步一步讲解了,因为里面涉…...
git常用命令(patch补丁和解决冲突)
diff/apply方案 使用diff命令生成patch文件,后使用apply命令应用patch到分支,从而实现修改复刻。 生成补丁 git diff > commit.patch 检查补丁 git apply --check commit.patch 应用补丁 git apply commit.patchgit diff --cached > commit.pa…...
数模方法论-整数规划
一、基本概念 非线性规划的应用包括工程设计、资源分配、经济模型等。在求解过程中,由于非线性特性,常用的方法有梯度法、牛顿法、启发式算法等。求解非线性规划问题时,解的存在性和唯一性通常较难保证,且可能存在多个局部最优解…...
【问题随记】在使用 AuthenticationManager 的时候,出现循环依赖问题 —— `java.lang.StackOverflowError`
问题随记 在使用 AuthenticationManager 的时候,出现循环依赖问题 —— java.lang.StackOverflowError,查资料查了两天半,终于找到原因。 2024-06-16T17:54:19.48708:00 ERROR 20672 --- [nio-8789-exec-1] o.a.c.c.C.[.[.[/].[dispatcherS…...
2024年华为杯-研赛F题论文问题一二讲解+代码分享
X射线脉冲星光子到达时间建模 摘要 脉冲星是一类高速自转的中子星,其自转形成规律性脉冲信号,类似于“宇宙中的灯塔”,因此被认为是极为精确的时钟。X射线脉冲星导航利用脉冲星信号为航天器提供时间和空间参考。通过比较脉冲信号到达航天器…...
代码随想录训练营第34天|dp前置转移
62. 不同路径 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,1));for(int i1; i<m;i){for(int j1; j<n; j){dp[i][j]dp[i-1][j]dp[i][j-1];}}return dp[m-1][n-1];} }; dp[i][j]:运动至(i,j)的方…...
ESXi 8.0U3i在部署过程中出现技嘉(GIGABYTE)Z390 I AORUS PRO WIFI主板+万兆intel x520-da2 sr2 82599ES万兆网卡不识别处理方法
你遇到的问题核心是:ESXi 8.0U3i 原生 / 通用集成镜像缺少对技嘉 Z390 I AORUS PRO WIFI 板载网卡、Intel X520-DA2(82599ES)万兆网卡及部分 NVMe/USB 控制器的完整驱动支持。解决思路是:先排查 BIOS → 再用定制镜像(下载现成或自己封装)→ 最后验证驱动…...
Mellanox ASAP2技术揭秘:如何通过硬件卸载提升OVS性能?
1. 为什么我们需要硬件卸载OVS? 在虚拟化环境中,Open vSwitch(OVS)就像是一个交通警察,负责指挥虚拟机之间的网络流量。但问题在于,这个"警察"一直靠软件在CPU上干活。想象一下,早高…...
Termux:X11的10个核心功能解析:触摸手势、键盘切换与多显示器支持
Termux:X11的10个核心功能解析:触摸手势、键盘切换与多显示器支持 【免费下载链接】termux-x11 Termux X11 add-on application. Still in early development. 项目地址: https://gitcode.com/gh_mirrors/te/termux-x11 Termux:X11是一个专为Android设备优化…...
Flax过滤器系统终极指南:如何实现灵活的变量选择机制
Flax过滤器系统终极指南:如何实现灵活的变量选择机制 【免费下载链接】flax Flax is a neural network library for JAX that is designed for flexibility. 项目地址: https://gitcode.com/GitHub_Trending/fl/flax Flax NNX的过滤器系统是神经网络编程中的…...
从国赛真题到实战演练:蓝桥杯CTF网络安全竞赛核心题型深度剖析
1. 逆向工程实战:从加密程序到Flag还原 去年蓝桥杯CTF国赛的第一道逆向题让不少选手印象深刻。题目给出一个名为encodefile的可执行程序和一个加密后的数据文件enc.dat,要求还原原始flag内容。这类题型在CTF中非常典型,主要考察选手对程序逻辑…...
对于对话中的文本简化,OpenClaw 的压缩比和可读性如何平衡?
关于文本简化中压缩比与可读性的平衡,这其实是一个在工程实践中经常遇到的核心矛盾。OpenClaw 的处理方式,仔细推敲起来,背后反映的是一种偏向实用主义的权衡思路。 压缩比高,通常意味着文本被大幅度精简,只保留最核心…...
主流开源License深度解析:从BSD到CC的适用场景与商业考量
1. 开源许可证的本质与核心价值 第一次接触开源许可证时,我和大多数人一样困惑:为什么明明是我的代码,却需要别人来告诉我怎么使用?后来在参与多个开源项目后才发现,许可证就像代码世界的交通规则,它不是为…...
AI Agent岗位需求暴涨986%,年薪达19万美元,新职业“Agent师“横空出世!
Sam Altman和Dario Amodei先后押注同一件事:第一家"一人十亿美元公司"将在2026年出现。与此同时,AI Agent相关岗位需求一年内增长986%,均薪达到19万美元。一个不以编程为门槛的新职业方向,正在打破"做多大的事就需…...
3分钟快速上手:用BepInEx为Unity游戏添加无限可能的终极插件框架
3分钟快速上手:用BepInEx为Unity游戏添加无限可能的终极插件框架 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 你是否曾想过为心爱的Unity游戏添加新功能,…...
海康MVS安装注意事项
⒈目的 掌握海康MVS相机配置软件安装技巧,以便在MvCameraControlNet的演示案例运行时不报错(通常为找不到MvCameraControl.dll),问题为MVS安装时无法对安装环境进行配置。 ⒉安装资源 在海康机器人官网上:海康机器人…...

