Flutter应用如何实现WiFi连接?多款第三方包尝试均失败
Flutter WiFi连接第三方包失效的解决办法
推荐使用维护活跃的第三方包
wifi_iot:当前维护状态良好,适配Android 10+权限规则,支持WiFi扫描、指定SSID(含密码)连接,构建成功率高。flutter_wifi_connect:选择最新版本,已适配Android 12+的ACCESS_FINE_LOCATION、NEARBY_WIFI_DEVICES权限,避免因权限配置问题导致构建失败。
旧包适配方案(若需继续使用)
如果必须使用你提到的wifi_connect、wifi_connector等过时包,需做以下适配:
- 修改
android/build.gradle,将compileSdkVersion和targetSdkVersion升级至33及以上; - 在
AndroidManifest.xml中补充必要权限:<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> - 针对Android 10+系统,需动态申请权限,示例代码:
import 'package:permission_handler/permission_handler.dart'; Future<void> requestWifiPermissions() async { final locationStatus = await Permission.location.request(); if (locationStatus.isGranted) { // 执行WiFi连接逻辑 } }
原生实现方案(最稳定)
若第三方包均无法满足需求,直接编写原生插件:
- Android端:使用
WifiManager(Android 9及以下)或WifiNetworkSpecifier(Android 10+)实现WiFi连接; - iOS端:利用
NEHotspotConfiguration框架完成连接,需在Xcode中开启Hotspot Configuration权限。
注意:Android 12及以上版本,仅连接已知WiFi时无需定位权限,扫描WiFi仍需申请定位权限。
内容的提问来源于stack exchange,提问作者Samier Uddin Ahammad Shovo
相关产品推荐
相关产品推荐

