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

VirtualBox虚拟机Ubuntu中Flutter connectivity_plus检测异常咨询

解决VirtualBox Ubuntu虚拟机中Flutter网络连接检测始终为none的问题

1. 检查VirtualBox网络适配器配置

  • 关闭Ubuntu虚拟机,打开VirtualBox设置,进入「网络」选项卡:
    • 确认网络适配器已启用
    • 将连接方式改为桥接适配器,选择宿主机正在使用的网卡(如Wi-Fi或以太网);若桥接模式有问题,可尝试NAT模式
  • 启动虚拟机后,在终端执行ping 8.8.8.8,确认能正常连通网络,排除基础网络故障

2. 配置Flutter网络检测包的Linux依赖

  • 建议将已废弃的connectivity包升级为connectivity_plus,并确保Linux环境依赖安装完整:
    1. 在Ubuntu终端执行命令安装系统依赖:
      sudo apt-get update && sudo apt-get install libnm-dev
      
    2. 检查项目linux/flutter/CMakeLists.txt中是否添加了NetworkManager相关配置:
      find_package(PkgConfig REQUIRED)
      pkg_check_modules(NetworkManager REQUIRED libnm)
      include_directories(${NetworkManager_INCLUDE_DIRS})
      target_link_libraries(${BINARY_NAME} PRIVATE ${NetworkManager_LIBRARIES})
      

3. 验证系统层面的网络状态

  • 在Ubuntu终端执行命令,确认系统能识别网络连接:
    nmcli general status
    
    查看输出的state字段,若显示connected,说明系统网络正常,问题出在Flutter包的适配;若显示disconnected,先修复Ubuntu系统的网络配置

4. 添加兜底网络检测逻辑

  • 由于虚拟机环境下connectivity包可能存在适配问题,可补充基于HTTP请求的检测逻辑,修正状态判断:
    Future<bool> checkInternetReachability() async {
      try {
        final address = await InternetAddress.lookup('google.com');
        return address.isNotEmpty && address[0].rawAddress.isNotEmpty;
      } on SocketException catch (_) {
        return false;
      }
    }
    
    在ConnectivityStatusNotifier中,当监听到ConnectivityResult.none时,调用该方法验证,根据实际连通情况更新状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:01:24