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环境依赖安装完整:- 在Ubuntu终端执行命令安装系统依赖:
sudo apt-get update && sudo apt-get install libnm-dev - 检查项目
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})
- 在Ubuntu终端执行命令安装系统依赖:
3. 验证系统层面的网络状态
- 在Ubuntu终端执行命令,确认系统能识别网络连接:
查看输出的nmcli general statusstate字段,若显示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
相关产品推荐
相关产品推荐

