在Flutter中,可以使用 wifi_iot 插件实现WiFi操作,包括连接、断开、扫描网络等。以下是主要功能及实现方法:
1. 添加依赖
在 pubspec.yaml 中添加:
dependencies:
wifi_iot: ^4.3.4
2. 权限配置
Android(android/app/src/main/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.ACCESS_COARSE_LOCATION" />
iOS(ios/Runner/Info.plist):
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要位置权限扫描WiFi</string>
3. 主要功能实现
连接WiFi:
import 'package:wifi_iot/wifi_iot.dart';
bool result = await WiFiForIoTPlugin.connect(
'SSID名称',
password: '密码',
security: NetworkSecurity.WPA, // 加密方式
);
print('连接结果: $result');
断开当前WiFi:
await WiFiForIoTPlugin.disconnect();
扫描可用网络:
List<WifiNetwork> networks = await WiFiForIoTPlugin.loadWifiList();
for (var network in networks) {
print('SSID: ${network.ssid}, 信号强度: ${network.level}');
}
获取当前连接信息:
String? ssid = await WiFiForIoTPlugin.getSSID();
String? bssid = await WiFiForIoTPlugin.getBSSID();
启用/禁用WiFi:
await WiFiForIoTPlugin.setEnabled(true); // 开启
await WiFiForIoTPlugin.setEnabled(false); // 关闭
4. 注意事项
- Android 10+ 需要动态位置权限才能扫描WiFi
- iOS 功能受限,无法直接连接指定WiFi(需用户手动确认)
- 加密方式需根据路由器设置选择:
WPA、WEP 或 NONE
建议在实际使用时添加错误处理,并注意平台差异。