You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求替代过时wifi_info_flutter的插件:实现附近WiFi列表获取与记录

替代过时的wifi_info_flutter:获取附近Wi-Fi SSID及信号强度的方案

一、Flutter插件方案

1. wifi_scan

这是目前维护活跃、功能完整的Wi-Fi扫描插件,支持Android和iOS平台,能直接获取附近Wi-Fi的SSID、信号强度(RSSI)等信息。

  • 权限配置:
    • Android:需在AndroidManifest.xml中添加ACCESS_FINE_LOCATION、CHANGE_WIFI_STATE权限;Android 12+还需POST_NOTIFICATIONS权限用于后台扫描。
    • iOS:需在Info.plist中添加NSLocationWhenInUseUsageDescription或NSLocationAlwaysAndWhenInUseUsageDescription(位置权限),以及NSWiFiUsageDescription(Wi-Fi信息访问权限)。
  • 简单使用示例:
    先在pubspec.yaml添加依赖:
    dependencies:
      wifi_scan: ^0.5.0
    
    核心代码:
    import 'package:wifi_scan/wifi_scan.dart';
    
    Future<void> fetchWifiList() async {
      // 请求必要权限
      final permissionStatus = await WifiScan.instance.requestPermissions();
      if (permissionStatus != PermissionStatus.granted) return;
    
      // 启动扫描
      final scanSuccess = await WifiScan.instance.startScan();
      if (!scanSuccess) return;
    
      // 获取扫描结果
      final scanResults = await WifiScan.instance.getScanResults();
      for (final result in scanResults) {
        // 提取SSID和信号强度(level单位为dBm,值越小信号越弱)
        print("SSID: ${result.ssid}, 信号强度: ${result.level} dBm");
        // 此处可将结果写入本地数据库或文件完成记录
      }
    }
    

2. flutter_wifi_connect

虽然主打Wi-Fi连接功能,但也支持扫描附近Wi-Fi列表,可获取所需的SSID与信号强度信息,配置对应权限后即可使用。

3. network_info_plus(注意局限)

属于Flutter官方维护的插件集合,主要用于获取当前已连接的Wi-Fi信息,若仅需扫描附近网络,建议搭配前两个插件使用。


二、原生代码实现(插件无法满足需求时)

Android端

利用系统WifiManager类实现扫描:

  • 权限配置同上述插件,Android 10+需动态申请ACCESS_FINE_LOCATION。
  • 核心原生代码示例(Kotlin):
    val wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        val scanSuccess = wifiManager.startScan()
        if (scanSuccess) {
            val scanResults = wifiManager.scanResults
            for (result in scanResults) {
                val ssid = result.SSID
                val signalStrength = result.level
                // 处理并记录数据
            }
        }
    }
    

iOS端

使用CoreWLAN框架实现扫描:

  • 需在Info.plist配置位置权限与Wi-Fi权限,iOS 13+仅允许前台扫描。
  • 核心原生代码示例(Swift):
    import CoreWLAN
    
    let interface = CWInterface()
    interface.scanForNetworks(withSSID: nil) { networks, error in
        guard let networks = networks else { return }
        for network in networks {
            let ssid = network.ssid ?? "未知SSID"
            let signalStrength = network.rssiValue
            // 处理并记录数据
        }
    }
    

注意事项

  • Android 12及以上版本,后台Wi-Fi扫描频率受系统限制,需合理控制扫描间隔。
  • iOS平台后台扫描Wi-Fi需要特殊权限,App Store审核通过率极低,建议仅在前台实现扫描功能。
  • 所有方案均需确保用户授予对应权限,否则无法获取Wi-Fi数据。

内容的提问来源于stack exchange,提问作者ZZZ iioo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:57:31