【发布时间】:2022-01-27 11:39:03
【问题描述】:
我在 Android 10 (APK 29) 上的颤振应用程序使用 flutter_wifi_connect 插件 (https://pub.dev/packages/flutter_wifi_connect) 连接到没有互联网的 wifi 设备。该插件使用 Android WifiNetworkSpecifier API。我也同时连接到蜂窝网络。
我正在向本地网络设备发送请求(在 URL 中使用 IP 地址),但它随机失败。
我怀疑 Android 有时会尝试使用蜂窝网络而不是 wifi。
触发请求
final response = await http.get(
Uri.parse('http://192.168.174.117:8080/api/test'),
);
给我以下错误,但只是有时。有时它会起作用。
I/flutter (27829): SocketException: OS Error: No route to host, errno = 113, address = 192.168.174.117, port = 38166
如果我手动关闭移动数据,它每次都有效。
我尝试了另一个插件wifi_iot (https://pub.dev/packages/wifi_iot) 并在请求之前添加了这个
await WiFiForIoTPlugin.forceWifiUsage(true);
但没有运气。
我将颤振更新到 2.1.0.-11.0.pre.122,没有帮助。
用户可以选择重新发送请求,因此最终它会起作用,但这是糟糕的用户体验,我不能让它这样。
有什么方法可以强制使用 wifi 处理特定请求(或强制不使用蜂窝网络处理特定请求)?应用程序的工作方式是与提供 wifi 的 wifi 设备进行通信,但也需要通过蜂窝网络连接到互联网。
【问题讨论】: